pandas:dataframe to_csv,如何设置列名

Posted

技术标签:

【中文标题】pandas:dataframe to_csv,如何设置列名【英文标题】:pandas: dataframe to_csv, how to set column names 【发布时间】:2019-01-23 12:07:53 【问题描述】:

代码sn-p:

import numpy as np
import pandas as pd
myseries=pd.Series(np.random.randn(5))
df=pd.DataFrame(myseries)
df.to_csv("output.csv")

输出:

      0
0    0.51..
1    0.14..
2    -0.68..
3    0.48..
4    1.89..

我希望列名是“值”而不是 0。我该怎么做? 我想我应该用 df.to_csv("output.csv", columns = ["values"]) 替换最后一条语句。但我得到了关键错误: u"None of [['values']] are in the [columns]" 我不知道那是什么意思。

[更新] 许多答案说我应该使用df.columns=['values']。好吧,这对我不起作用。我不仅关心数据框是什么样的,还关心 csv 文件是什么样的。数据框看起来不错,但 csv 文件不是。这是令人困惑的部分。

...
df.columns=["values"]
df.to_csv("output.csv")

上面写着:IOError: [Errno 13] Permission denied: 'output.csv'. 然后我使用绝对路径“C:\Users\myname\Desktop\output.csv”,错误如下:IOError: [Errno 13] Permission denied: 'C:\\Users\\myname\\Desktop\\output.csv' 我不知道为什么会出现这个错误,但这很令人困惑。 有关更多信息,我在 win10 上安装了 anaconda-2.7。我用 spyder 测试了代码。

【问题讨论】:

df.columns=['values'] df.columns = ['values'] df=pd.DataFrame(myseries, columns=['values']) 如果Permission denied 在写入之前尝试关闭文件,或者可能是另一个permission 问题 嗨。你找到保存航向的方法了吗?我遇到了同样的问题:使用“df.to_csv”时,标题不会保存到 CVS 文件中。谢谢 【参考方案1】:

您可以在DataFrame构造函数中设置列名:

df = pd.DataFrame(myseries, columns=['values'])
df.to_csv("output.csv")

或者:

df = pd.DataFrame('values':myseries)
print (df)
     values
0 -0.429758
1 -0.019931
2  1.189596
3  1.309223
4 -0.337061

df.to_csv("output.csv")

或者在DataFrame.to_csv中设置参数header

df = pd.DataFrame(myseries)
df.to_csv("output.csv", header=['values'])

或者在Series.to_csv:

myseries.to_csv("output.csv", header=['values'])

【讨论】:

【参考方案2】:

要将列名设置为“值”尝试:

    df.columns = ['values']

【讨论】:

【参考方案3】:

处理您的问题:

    列重命名 - 我在 Python 3.6+ 上找到了兼容的 Pandas 版本,df.columns = ['values'] 在输出到 csv 时可以正常工作。注意不给索引列一个标题(见下面的3)

    编写 output.csv 文件时的权限问题 - 这几乎总是与在电子表格或编辑器中打开 csv 文件有关。你有时也会在它说它写但 csv 保持不变的地方得到一个无声的失败。否则,请检查存储文件的目录和文件权限。某些操作系统喜欢您先创建文件 (touch output.csv)。如果您从 cron 或其他批处理文件运行 python,请检查运行代码的用户并检查该用户的权限。

    命名索引列 - 如果你想给索引一个名字然后使用df.to_csv("output.csv", index_label="whatever_name_you_want")

【讨论】:

以上是关于pandas:dataframe to_csv,如何设置列名的主要内容,如果未能解决你的问题,请参考以下文章

pandas.DataFrame.to_csv:按列选择性地应用 date_format

Pandas DataFrame.to_csv() 不输出所有列

Pandas DataFrame.to_csv 引发 IOError:没有这样的文件或目录

pandas使用read_csv读取数据使用skiprows参数跳过指定的数据行但保留表头pandas使用to_csv函数将dataframe保存为gzip压缩文件

Pandas使用to_csv保存中文数据用Excel打开是乱码

pandas-19 DataFrame读取写入文件的方法