如何将标题行添加到Pandas DataFrame


165

我正在将csv文件读入pandas。此csv文件由四列和一些行组成,但没有要添加的标题行。我一直在尝试以下方法:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

但是,当我应用代码时,出现以下错误:

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)

错误的确切含义是什么?在python中将标题行添加到csv文件/ pandas df的一种干净方法是什么?


这是您问题的另一种解释:将另一个标头添加到现有的数据框以创建MultiIndex。
cs95,19年

Answers:


257

您可以names直接在read_csv

names:类似数组,默认为None要使用的列名列表。如果文件不包含标题行,则应显式传递header = None

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

9
你会笑的。我实际上尝试过此方法,但没有意识到您必须在名称周围加上方括号。从逻辑上回顾一下。谢谢!
sequence_hard

不用担心,我们都犯了那些愚蠢的错误。我也对他们感到内gui。
Leb 2015年

@Leb,我遇到了完全相同的问题,并且尝试了您的解决方案。我得到了表的标题,但第一行也被相同的标题名称代替。我现在要做什么?
007mrviper

它为我的数据增加了更多的列,全部具有NaN属性。这是因为我的分隔符是一个空白空间。
SalahAdDin


15
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

完成此操作后,只需进行检查[显然,我知道,你知道。但是...

my_CSV_File.head()

希望对您有帮助...干杯


请使用{}按钮设置代码格式。缩进很重要。
T先生

7

要修复代码,您只需将更[Cov]改为Cov.values,第一个参数pd.DataFrame将变为多维numpy数组:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

但最聪明的解决方案仍然是pd.read_excelheader=None和一起使用names=columns_list


当我们提供columns_list时,是否可以为选定的列添加默认值?
Chintan Gotecha
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.