我正在读一个csv文件到熊猫。这个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会是什么干净的方式?


当前回答

要修复你的代码,你可以简单地将[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_excel with header=None and names=columns_list。

其他回答

要修复你的代码,你可以简单地将[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_excel with header=None and names=columns_list。

您可以直接在read_csv中使用名称

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

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["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()

因为上面提到我们正在从csv文件中读取,所以分隔符应该是','[默认值,不需要提到]'并且给定的文件没有头文件,因此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

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

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