Pandas: float_format和小数点不能正常工作



我正在尝试使用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

相关内容

  • 没有找到相关文章