代码段:
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测试了代码。
答案 0 :(得分:4)
您可以在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'])
答案 1 :(得分:4)
要将列名设置为“值”,请尝试:
df.columns = ['values']
答案 2 :(得分:0)
它显示以下错误:
says:IOError: [Errno 13] Permission denied: 'output.csv'.
我遇到了同样的错误,问题是我已经在Excel中打开了文件,因此当我的程序想用相同的文件名写入相同的目录时,我得到了这个错误。
答案 3 :(得分:0)
处理您的问题:
列重命名 - 我在 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")