我正在尝试使用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
如何方便pandas使用三个十进制数字和所需的逗号作为十进制符号?
我在运行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","2 1 n1,"1、2","2 2" n2,"1、3"、"2、3" n"
此行为可能是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