9

read_csv用来将 CSV 文件读入 Pandas 数据帧。我的 CSV 文件包含大量小数/浮点数。这些数字使用欧洲十进制表示法编码:

1.234.456,78

这意味着'.' 用作千位分隔符,',' 是小数点。

熊猫 0.8。提供一个read_csv名为“千”的参数来设置千位分隔符。还有一个额外的论点来提供小数点吗?如果不是,解析欧式十进制数的最有效方法是什么?

目前我正在使用字符串替换,我认为这是一个显着的性能损失。我使用的编码是这样的:

# 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)

任何帮助表示赞赏。

4

2 回答 2

16

对于欧式编号,请使用 中的thousandsdecimal参数pandas.read_csv

例如:

pandas.read_csv('data.csv', thousands='.', decimal=',')

文档

str,可选的千位分隔符。

十进制

str,默认 '.' 识别为小数点的字符(例如,对欧洲数据使用​​“,”)。

于 2019-05-13T14:47:24.770 回答
9

您可以使用converterskw in 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
于 2012-08-01T16:21:23.337 回答