先上个图:
恩,话说都写到一个单元格里了,前面是日期,后面括号里是数值型的,还有些带着单位,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 |