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

116

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

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

我该如何删除列名行(在此示例中为Val1,Val2,Val3),以便我可以导出一个没有列名,只有数据的CSV文件?

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


2
“列名行”被称为“标题”。大多数读/写命令(如to_csv())都有一个选项header来控制它,例如header = None - smci
3个回答

220

您可以使用header=False来写入不带标题的csv文件,使用index=False来省略索引。如果需要,您还可以使用sep修改分隔符。

不带标题行的CSV示例:

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

TSV(制表符分隔)示例,省略索引列:
df.to_csv('filename.tsv', sep='\t', index=False)

36

找到一种方法来做到这一点:

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

这告诉pandas在不包含标题的情况下写入csv文件。你可以使用df.to_excel做同样的事情。


1
@smci 你可能在想read_csv。对于to_csvheader参数的类型是bool or list of str, default True - David Gilbertson

5
如果您传递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


4
似乎这种说法不再正确。 - Rick
1
选项在 pandas 0.17(2015年)早期已更改为 header=None。请参见链接:https://pandas.pydata.org/pandas-docs/version/0.17.0/whatsnew.html#changes-to-bool-passed-as-header-in-parsers - smci
3
某个时间点它被改回去了。在 Pandas 1.1.1 中,header=False 是可以使用的。 - David Waterworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接