我正在尝试使用pandas'to_csv
方法将pandas DataFrame df
写入csv文件,并使用以下行:
df.to_csv(f, index=False, header=False, decimal=',', sep=' ', float_format='%.3f')
它提供了如下的csv文件:
295.998 292.500 293.000 293.000
295.998 292.500 293.000 293.000
295.998 292.500 293.000 293.000
所以float_format
选项效果很好,因为所有数字都有三位小数。但是,decimal
选项(decimal = ','
)似乎不起作用,因为小数点是一个点而不是逗号。
我感兴趣的是以下内容:
295,998 292,500 293,000 293,000
295,998 292,500 293,000 293,000
295,998 292,500 293,000 293,000
如何让熊猫使用三位十进制数字和所需的逗号作为十进制符号?
答案 0 :(得分:1)
我在运行pandas版本“0.17.1”时遇到了同样的问题。我发现我没有预先指定DataFrame的dtype,最终它作为类型对象(df.dtypes)。似乎没有正确转换类型对象的数据帧,如下面的最小示例所示:
df_object = pd.DataFrame({'a': [1.1, 1.2, 1.3], 'b':[2.1, 2.2, 2.3],}, dtype=object)
df_object.to_csv(decimal=',')
'A,B \ n0,1.1,2.1 \ n1,1.2,2.2 \ n2,1.3,2.3 \ N'
df_float = pd.DataFrame({'a': [1.1, 1.2, 1.3], 'b':[2.1, 2.2, 2.3],}, dtype=float)
df_float.to_csv(decimal=',')
”,A,B \ N0, “1,1”, “2,1” \ N1, “1,2”, “2,2” \ N 2, “1,3”, “2,3” \ N'
答案 1 :(得分:0)
这种行为可能是pandas版本0.15.2中的一个错误,因为它在使用以下命令更新到版本0.16.2后工作正常:
sudo pip3 install -U pandas
可以通过
检查import pandas as pd
pd.__version__
给予
'0.16.2'
通过使用问题中提供的命令,生成的csv文件看起来符合要求:
295,998 292,500 293,000 293,000
295,998 292,500 293,000 293,000
295,998 292,500 293,000 293,000