我有下面的代码片段将我的数据导出为csv文件:
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
df = pd.DataFrame(get_some_data_from_somwhere(), index=rpm)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
它创建一个csv文件,其格式如下:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0.25 303,317 323,372 302,384 324,332
然而,我希望在索引列上有三个十进制数字和一个逗号作为小数符号,如下所示:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0,250 303,317 323,372 302,384 324,332
因此,在使用.to_csv
命令将 Dataframe 导出到csv文件时,似乎没有将index
和decimal
符号选项应用于索引列。
既然index
选项被设置为True
,并且所有值(索引列除外)都具有正确的格式和小数符号,那么我如何才能实现这种行为呢?
我必须以某种方式单独处理索引列吗?
2条答案
按热度按时间siv3szwd1#
我会改写你的两条底线:
进入
这是一种解决方法,但正如您所注意到的,关键字参数
decimal=
和float_format=
仅适用于data列,而不适用于索引。我所做的是用
reset_index
将索引放入 Dataframe ,然后告诉to_csv(index=False
不要将索引保存到文件中(因为它现在在数据中)。另外,自己打开文件流(
with open('foo.csv', 'w') as f:
)最好留给pandas,当你给予它一个字符串'foo.csv'
作为第一个参数时,它会自己完成这一任务。xqk2d5yq2#
在较新版本的pandas中(例如1.5.3),index的格式是
float_format
沿着列中的值。所以下面的代码正是OP所希望的:如果你来这篇文章寻找一种方法来获得旧的行为(其中索引的格式与列中的值不同),
round()
可以在转储到csv文件之前使用。