PandasDataframe.to_csv数据帧十进制=','不

2024-09-30 22:10:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我正在将Pandas数据帧写入csv文件,并希望将十进制分隔符改为逗号(,)。像这样:

results.to_csv('D:/Data/Kaeashi/BigData/ProcessMining/Voorbeelden/Voorbeeld/CaseEventsCel.csv', sep=';', decimal=',')

但是csv文件中的十进制分隔符仍然是. 为什么?我做错了什么?在


Tags: 文件csvto数据pandasdataresults逗号
3条回答

不知怎么的,我也没能让这个工作起来。我总是用下面的脚本来纠正它。虽然很脏,但对我来说很管用:

for col in df.columns:
    try:
        df[col] = df[col].apply(lambda x: float(x.replace('.','').replace(',','.')))
   except:
        pass

编辑:误读了这个问题,你可能会用同样的策略,把你所有的浮点数都改成字符串:)。再说一次,你应该弄清楚为什么它不起作用。如果你能用的话,就把它寄出去。在

直到0.16.0才添加此功能

Added decimal option in to_csv to provide formatting for non-‘.’ decimal separators (GH781)

将pandas升级到更新的版本,就可以了。下面的代码使用10 minute tutorial和pandas版本0.18.1

>>> import pandas as pd
>>> import numpy as np
>>> dates = pd.date_range('20130101', periods=6)
>>> df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
>>> df
                   A         B         C         D
2013-01-01 -0.157833  1.719554  0.564592 -0.228870
2013-01-02 -0.316600  1.545763 -0.206499  0.793412
2013-01-03  1.905803  1.172803  0.744010  1.563306
2013-01-04 -0.142676 -0.362548 -0.554799 -0.086404
2013-01-05  1.708246 -0.505940 -1.135422  0.810446
2013-01-06 -0.150899  0.794215 -0.628903  0.598574
>>> df.to_csv("test.csv", sep=';', decimal=',')

这会产生一个“测试.csv“文件如下所示:

^{pr2}$

如果decimal参数不起作用,可能是因为列的类型是object。(检查最后一行中的dtype值,df[column_name]

如果某些行的值无法解析为数字,则会发生这种情况。在

可以强制列更改类型: Change data type of columns in Pandas。 但这可能会使您丢失该列中的非数值数据。在

相关问题 更多 >