数据清洗处理实战:pandas 两列数据合并成一列,并清除里面的nan值的方法

一、相关背景资料

最近在开发一个OCR识别项目时,识别出的表格出现问题,某一列的表格,结果识别出来变成了两列数据,而且数据格式极不规范,有的数据中原来没有空格,结果识别出来带了空格,有的数据本来是一列,结果识别出来变成了两列,而且多出了很多nan的空值。生成的数据结构如下:

                                  原始表格数据              识别出的数据 

将识别出的数据逐行打印,是这样的:

其中红色的方框是我将数据 中产生的空格标出,以方便阅读。

这个时候就要将两列合并成一列,去除识别出的nan值,将识别出数据的空格去掉,变成正常的小数。

二、数据处理思路

数据清晰处理,重点是思路和流程,思路和流程清楚了,代码就是相对简单的事情。

下面是我处理这些数据的一个思路,仅供参考:

    1. 首先将一行行读出;

    2.将每行的两个数据分别取出,去掉数据中间的空格;

    3.将处理过的数据加入新的列表,如果为‘nan’值,则不加入列表,此处为这个数据处理的核心,也就是将两列数据变为一列数据的关键。

    4.生成新的pd.Series 数据框。

    5.检查一下数据的顺序,如果顺序没有问题,则说明整体没有问题。

三、程序实现

思路清楚了,整个程序的实现相对比较简单。

new_ = list()     # 接收每一个值的中间数据列表
             
for v in df.values:          # df为识别出的两列数据框列表,遍历每一行数据
    print(v)    
    v0 = str(v[0]).strip().replace(' ','')   # 分别取出每行的两个数据,并分别
                                             # 进行处理,去掉前后和中间多余无用
                                             # 的空格
    v1= str(v[1]).strip().replace(' ','')
    if 'nan' not in v0:                      # 去掉空值
        new_.append(v0)
    if 'nan' not in v1:
        new_.append(v1)
print(new_)

df_ = pd.Series(new_)                        # 转换为数据框格式供后续处理。

如果这篇文章帮助到您,欢应点赞收藏,如果有疑问或者有好的思路和方法,欢迎留言讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃饭的家伙事儿

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值