先上个图:
恩,话说都写到一个单元格里了,前面是日期,后面括号里是数值型的,还有些带着单位,ok,lets do IT。
①我们要先把括号统一成字符‘s’和‘e’,我这里建议大家用excel自带的替换功能,中文半角模式下的‘(’也可以被一起替换掉。
②然后是套、吨、T、等单位清洗。
③空格要用excel中的替换或者trim函数去掉,用trim函数的时候要注意,它只能去掉一次中间的空格,如果有两个空格的话,就需要用两次trim,所以建议直接用替换比较好。
④接下来就可以上代码了,我讲编号字段起名叫code,待清洗字段起名out,输入文件名test,输出文件名output
import re
import pandas as pd
diff=[]
data=pd.read_excel(r'C:/Users/Administrator/Desktop/test.xlsx')
df_total=pd.DataFrame({'x':[],'y':[],'z':[]})
for c in range(len(data)):
x=re.findall('\d+[.]\d+[s]|\d+[s]',data['out'][c])
y=re.findall('[s]\d+[e]|[s]\d+[.]\d+[e]',data['out'][c])
if len(x)<>len(y):
diff.append(data['code'][c])
continue
else:
df=[]
D={'x':x,'y':y}
df=pd.DataFrame(D)
df['z']=data['code'][c]
df_total=pd.concat([df,df_total])
df_total.to_excel('C:/Users/Administrator/Desktop/output.xlsx')那么最后的结果就可以把原来一行里集中在一个单元格里的信息释放出来了!
| 12.10s | s15e | Z20141210-001 |
| 11.3s | s7e | Z20141103-001 |
| 11.10s | s3e | Z20141023-003 |
本文介绍了一种使用Excel和Python进行复杂数据清洗的方法。通过实际案例展示了如何利用Excel的替换功能和Python的正则表达式来清洗包含日期、数值及单位的数据。此过程包括统一字符、单位清洗、去除空白格,并通过编写Python脚本来解析并重新组织数据。
7万+

被折叠的 条评论
为什么被折叠?



