我有一个带有两个定界符(;
)和(,
)的CSV,它看起来像这样:
vin;vorgangid;eventkm;D_8_lamsoni_w_time;D_8_lamsoni_w_value
V345578;295234545;13;-1000.0,-980.0;7.9921875,11.984375
V346670;329781064;13;-960.0,-940.0;7.9921875,11.984375
我想将其导入到大熊猫数据帧,用(;
)用作柱分离器和(,
)作为用于一个分离器list
或array
使用float
作为数据类型。到目前为止,我正在使用此方法,但是我敢肯定有一些更简单的方法。
aa=0;
csv_import=pd.read_csv(folder+FileName, ';')
for col in csv_import.columns:
aa=aa+1
if type(csv_import[col][0])== str and aa>3:
# string to list of strings
csv_import[col]=csv_import[col].apply(lambda x:x.split(','))
# make the list of stings into a list of floats
csv_import[col]=csv_import[col].apply(lambda x: [float(y) for y in x])
除了此处的其他更好的答案(更具体地讲是熊猫)之外,应该指出的是,Python本身在字符串处理方面非常强大。您可以将替换';'
为的结果','
放在一个StringIO
对象中,然后从那里正常工作:
In [8]: import pandas as pd
In [9]: from cStringIO import StringIO
In [10]: pd.read_csv(StringIO(''.join(l.replace(';', ',') for l in open('stuff.csv'))))
Out[10]:
vin vorgangid eventkm D_8_lamsoni_w_time \
V345578 295234545 13 -1000.0 -980.0 7.992188
V346670 329781064 13 -960.0 -940.0 7.992188
D_8_lamsoni_w_value
V345578 295234545 11.984375
V346670 329781064 11.984375
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句