【问题标题】:pandas: dataframe to_csv, how to set column namespandas:dataframe to_csv,如何设置列名
【发布时间】: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 文件中。谢谢

标签: python pandas csv dataframe


【解决方案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】:

      处理您的问题:

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-02-23
        • 1970-01-01
        • 2014-05-17
        • 2019-04-23
        • 2017-09-05
        • 2022-01-27
        • 2015-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多