我使用read_csv
读CSV文件到大熊猫的数据帧。 我的CSV文件中包含大量小数/花车。 这些数字是使用欧洲十进制形式编码:
1.234.456,78
这意味着,“” 作为千个为分隔符和“”是小数点。
大熊猫0.8。 提供了一个名为“千人”设置千个为分隔符一个read_csv说法。 有没有提供小数标记以及一个额外的参数? 如果没有,什么是解析EUROPEN风格的十进制数的最effcient方法是什么?
目前我使用的字符串替换,我认为是一个显著性能比较点球。 我使用的编码是这样的:
# Convert to float data type and change decimal point from ',' to '.'
f = lambda x: string.replace(x, u',', u'.')
df['MyColumn'] = df['MyColumn'].map(f)
任何帮助表示赞赏。
谢谢,托马斯
您可以使用converters
在千瓦read_csv
。 鉴于/tmp/data.csv
是这样的:
"x","y"
"one","1.234,56"
"two","2.000,00"
你可以做:
In [20]: pandas.read_csv('/tmp/data.csv', converters={'y': lambda x: float(x.replace('.','').replace(',','.'))})
Out[20]:
x y
0 one 1234.56
1 two 2000.00
对于欧洲风格的号码,使用thousands
和decimal
参数pandas.read_csv
。
例如:
pandas.read_csv('data.csv', thousands='.', decimal=',')
从文档 :
数以千计的 :
STR,可选的千位分隔符。
十进制 :
STR,默认的 '' 字符识别(欧洲数据,例如使用“”)作为小数点。
文章来源: How to efficiently handle european decimal separators using the pandas read_csv function?