Pandas如何在将DataFrame导出为CSV时保留末尾的零。

5
在这个问题中,我的目标是在将DataFrame导出为CSV时保留最后的尾随零。
我的数据集看起来像这样:
EST_TIME    Open    High
2017-01-01  1.0482  1.1200    
2017-01-02  1.0483  1.1230
2017-01-03  1.0485  1.0521
2017-01-04  1.0480  1.6483
2017-01-05  1.0480  1.7401
...., ...., ....
2017-12-31  1.0486  1.8480

我通过以下方法导入和创建DataFrame,并将其保存为CSV:

df_file = '2017.csv'
df.to_csv(df_file, index=False)
files.download(df_file)

当我查看CSV文件时,我看到了如下内容:
EST_TIME    Open    High
2017-01-01  1.0482  1.12   
2017-01-02  1.0483  1.123
2017-01-03  1.0485  1.0521
2017-01-04  1.048   1.6483
2017-01-05  1.048   1.7401
...., ...., ....
2017-12-31  1.0486  1.848

所有结尾的零都被去掉了。我希望在保存CSV时保留尾随的零,并将其保留到4位小数。

请问如何实现这一点?


1
我假设这取决于您的CSV阅读器读取浮点数的行为,如果要保留尾随零,则必须将列转换为字符串并按所需方式切片。 - Umar.H
2个回答

5
尝试这样做:将浮点数格式化为显示4位小数,并保存为4位小数。在读取到pandas时:
pd.options.display.float_format = '{:,.4f}'.format

当保存为CSV文件时。
df.to_csv('your_file.csv', float_format='%.4f',index=False)

enter image description here


2
你可以在写入csv之前调用apply并使用以下方法格式化:format:"最初的回答"
df_file = '2017.csv'
df['Open'] = df['Open'].apply('{:0<6}'.format)
df['High'] = df['High'].apply('{:0<6}'.format)
df.to_csv(df_file, index=False)

To apply to all columns, you can use applymap:

df = df.applymap('{:0<6}'.format)

希望这有所帮助。原始回答翻译成"最初的回答"。

那很有帮助。如果我除了“Open”和“High”之外还有其他列,我们可以自动完成吗? - floss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接