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压缩文件