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

Sim*_*ggs 6 python csv numpy ipython pandas

初始问题

当我在 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
Run Code Online (Sandbox Code Playgroud)

它输出以下结果:

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
Run Code Online (Sandbox Code Playgroud)

但是,当我打开时,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
Run Code Online (Sandbox Code Playgroud)

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

粗略的解决方法

目前的粗略解决方法是我执行以下操作:

df.to_csv('output.csv', index_label = 'x|y')
Run Code Online (Sandbox Code Playgroud)

结果是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
Run Code Online (Sandbox Code Playgroud)

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

语境

这就是我正在做的事情:https://github.com/SimonBiggs/Electron-Cutout-Factors

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

小智 10

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

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


Joh*_*nck 1

这个怎么样?它略有不同,但希望可用,因为它符合 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
Run Code Online (Sandbox Code Playgroud)