将 pandas 数据框保存到 csv 时,如何保留 columns.name?

Posted

技术标签:

【中文标题】将 pandas 数据框保存到 csv 时,如何保留 columns.name?【英文标题】:When saving a pandas dataframe to csv how do I retain the columns.name? 【发布时间】:2014-09-28 20:39:27 【问题描述】:

最初的问题

当我在 ipython 中运行以下命令时

import numpy as np
import pandas as pd

df = pd.DataFrame(np.round(9*np.random.rand(4,4), decimals=1))
df.index.name = 'x'
df.columns.name = 'y'

df.to_csv('output.csv')

df

它输出以下结果:

y    0    1    2    3
x                    
0  7.6  7.4  0.3  7.5
1  5.6  0.0  1.5  5.9
2  7.1  2.1  0.0  0.9
3  3.7  6.6  3.3  8.4

但是,当我打开 output.csv 时,“y”被删除了:

x   0   1   2   3
0   7.6 7.4 0.3 7.5
1   5.6 0   1.5 5.9
2   7.1 2.1 0   0.9
3   3.7 6.6 3.3 8.4

如何使df.columns.name 在我将数据帧输出到 csv 时保留?

粗略的解决方法

目前粗略的解决方法是我在做以下事情:

df.to_csv('output.csv', index_label = 'x|y')

这导致output.csv 读取:

x|y 0   1   2   3
0   7.6 7.4 0.3 7.5
1   5.6 0   1.5 5.9
2   7.1 2.1 0   0.9
3   3.7 6.6 3.3 8.4

更好的东西会很棒!感谢您的帮助(提前)。

上下文

这就是我的工作:https://github.com/SimonBiggs/Electron-Cutout-Factors

这是一个示例表:https://github.com/SimonBiggs/Electron-Cutout-Factors/blob/master/output/20140807_173714/06app06eng/interpolation-table.csv

【问题讨论】:

我认为这个(AFAIK)没有选项的部分原因是很难知道列索引名称会去哪里 - 你认为它到底属于哪个单元格? 这将与用作 ipython 输出的显示设置相同。 “y”将进入单元格(1,1),“x”将进入单元格(2,1),左上角的数据值将从单元格(3,2)开始。 【参考方案1】:

您可以传递一个列表来命名列,然后您可以在写入 csv 时指定索引名称:

df.columns = ['column_name1', 'column_name2', 'column_name3']
df.to_csv('/path/to/file.csv', index_label='Index_name')

【讨论】:

【参考方案2】:

这个怎么样?它略有不同,但希望可以使用,因为它符合 CSV 范式:

>>> df.columns = ['y'.format(name) for name in df.columns]
>>> df.to_csv('output.csv')
>>> print open('output.csv').read()
x,y0,y1,y2,y3
0,3.5,1.5,1.6,0.3
1,7.0,4.7,6.5,5.2
2,6.6,7.6,3.2,5.5
3,4.0,2.8,7.1,7.8

【讨论】:

感谢您的报价,很遗憾这不能满足我的需求。我关心列和索引中写入的数字。 您能否更具体地说明我的解决方案给您带来的问题?似乎您所要求的内容将要求您在要求 Pandas 编写 CSV 正文之前编写自己的标题行。如果你真的需要,你可以这样做。 首先:我希望代码尽可能地可读和透明。所以最小的并发症很重要。 第二: 我正在创建一个查找表以用于插值。轴代表“宽度”和“纵横比”,因此是标题。完整代码可以在我的 gihtub here 看到。可以看到这些插值表之一的示例here。 我认为您的“粗略解决方法”与您可能得到的一样好。 好的,谢谢约翰。此外,对于未来的读者,表格链接已更改。现在应该可以找到一个示例表 here

以上是关于将 pandas 数据框保存到 csv 时,如何保留 columns.name?的主要内容,如果未能解决你的问题,请参考以下文章

将熊猫数据框保存到csv时如何保留numpy数组

将熊猫数据框保存到csv时如何保留numpy数组

将 Pandas 数据框的选择保存到 csv [重复]

如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件

在 Pandas 中保存 csv 文件时如何添加交替的空行

当我将 pandas 数据框保存为 csv 文件时,从 18 位长的列中截断 3 位