如何添加标题行到 pandas DataFrame

我正在将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 的间接方式是什么?

711173 次浏览

可以直接在read_csv . xml文件中使用names

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

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

或者,你可以用header=None读取csv文件,然后用df.columns添加它:

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None)
Cov.columns = ["Sequence", "Start", "End", "Coverage"]
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

完成这些后,只需检查它:

my_CSV_File.head()

为了修复你的代码,你可以简单地将[Cov]更改为Cov.valuespd.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=Nonenames=columns_list

简单易行的解决方案:

import pandas as pd


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

注意:确保你的头长度和CSV文件头长度不匹配。

因为上面提到我们正在从csv中读取数据,所以分隔符应该是','[as default, not need to mention]' and the given file has no header so header=None '

示例代码:

import pandas as pd
data = pd.read_csv('path/to/file.txt',header=None)
data.columns = ["Sequence", "Start", "End", "Coverage"]
print(data.head()) #Print the first rows