首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >pandas to_csv参数float_format和decimal不适用于索引列

pandas to_csv参数float_format和decimal不适用于索引列
EN

Stack Overflow用户
提问于 2015-07-23 11:35:00
回答 1查看 60.4K关注 0票数 24

背景

我正在分别做一些模拟。通过各种参数(在本例中仅限rpm )进行的系统分析,并将结果数据帧results_df的每一行都附加到一个汇总数据帧df,其中包含根据变化的rpm给出我的系统的性能。

为了获得用于绘图和数据分析的适当索引,我将列表中的不同值(这里是rpm)转换为pandas序列ser,并将此序列与包含我感兴趣的结果的汇总数据帧df连接起来。

因为我感兴趣的每个计算的结果只是每个计算的最后一行,所以我使用.tail(1)从结果数据帧results_df中提取这些数据。

到目前为止,我所做的工作如以下代码片段所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]

ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()

for i, val in enumerate(rpm):
    results_df = get_some_data_from_somwhere()
    df_list.append(results_df.tail(1))

df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)


with open('foo.csv', 'w') as f:
    data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')

问题

我得到的这个csv文件的格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0.25 303,317 323,372 302,384 324,332

但是,我希望索引列上有三个十进制数字和一个逗号作为小数符号,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0,250 303,317 323,372 302,384 324,332

因此,在使用.to_csv命令将数据帧导出到csv文件时,indexdecimal符号选项似乎没有应用于索引列。

既然index选项设置为True,并且所有值(索引列除外)都具有正确的格式和小数符号,我如何实现此行为?

我必须以某种方式分开处理索引列吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-23 12:05:56

我会重写你的两条底线:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
with open('foo.csv', 'w') as f:
    data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')

转到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data.reset_index().to_csv('foo.csv', index=False, header=True, decimal=',', sep=' ', float_format='%.3f')

这是一种变通方法,但正如您已经注意到的,关键字参数decimal=float_format=仅适用于data列,而不适用于索引。

相反,我所做的是使用reset_index将索引放入数据帧中,然后告诉to_csv(index=False不要将索引保存到文件中(因为它现在在数据中)。

此外,自己打开一个文件流(with open('foo.csv', 'w') as f:)最好留给pandas,当您只给它一个字符串'foo.csv'作为第一个参数时,它会自己完成这项工作。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31586162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文