一、相关背景资料
最近在开发一个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_) # 转换为数据框格式供后续处理。
如果这篇文章帮助到您,欢应点赞收藏,如果有疑问或者有好的思路和方法,欢迎留言讨论!