pandas:float_format和十进制符号不能正常工作

问题描述 投票:0回答:2

我正在尝试使用pandas的df方法将pandas DataFrame to_csv写入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

如何说服熊猫使用三位十进制数字和所需的逗号作为十进制符号?

python csv pandas dataframe decimal-point
2个回答
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'


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
© www.soinside.com 2019 - 2024. All rights reserved.