导出 pandas DataFrame 时如何删除列名行?

Posted

技术标签:

【中文标题】导出 pandas DataFrame 时如何删除列名行?【英文标题】:How do you remove the column name row when exporting a pandas DataFrame? 【发布时间】:2013-11-15 21:23:34 【问题描述】:

假设我将以下 Excel 电子表格导入数据框:

Val1 Val2 Val3
1     2    3 
5     6    7 
9     1    2

如何删除列名行(在本例中为 Val1, Val2, Val3),以便导出没有列名的 csv,仅导出数据?

我试过df.drop()df.ix[1:] 都没有成功。

【问题讨论】:

'column name row' 称为'header'。大多数像to_csv() 这样的读/写命令都有一个选项header 来控制它,例如header = None 【参考方案1】:

想出了一个办法:

df.to_csv('filename.csv', header = False)

这告诉 pandas 写一个没有标题的 csv 文件。你可以对 df.to_excel 做同样的事情。

【讨论】:

不,the option was changed to header=None way back in pandas 0.17 (2015)【参考方案2】:

您可以使用 header=False 写入不带标头的 csv 并使用 index=False 不带索引。如果需要,您还可以使用sep 修改分隔符。

没有标题行的CSV示例,省略了标题行:

df.to_csv('filename.csv', header=False)

TSV(制表符分隔)示例,省略索引列:

df.to_csv('filename.tsv', sep='\t', index=False)

【讨论】:

【参考方案3】:

如果你传递 header=False,你会得到这个错误

TypeError: Passing a bool to header is invalid. Use header=None 
for no header or header=int or list-like of ints to specify the 
row(s) making up the column names

改为使用 header=None

【讨论】:

这似乎不再是真的。 The option was changed to header=None way back in pandas 0.17 (2015) 它在某个时候被改回来了。 header=False 适用于 pandas 1.1.1

以上是关于导出 pandas DataFrame 时如何删除列名行?的主要内容,如果未能解决你的问题,请参考以下文章

如何以附加模式导出 DataFrame to_json - Python Pandas?

Pandas Dataframe - 如何检查列中数值的符号,如果为负则删除符号并在发生这种情况时创建另一列?

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

如何使用 pandas 获取格式的表格并导出到 csv?

Elasticsearch:将数据从 Elasticsearch 和 Kibana 导出到 Pandas Dataframe