如何将标题行添加到pandas DataFrame中

seq*_*ard 137 python csv header pandas

我正在读一个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')
Run Code Online (Sandbox Code Playgroud)

但是当我应用代码时,我收到以下错误:

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)
Run Code Online (Sandbox Code Playgroud)

这个错误究竟是什么意思?在python中添加标题行到我的csv文件/ pandas df会是一个干净的方法吗?

Leb*_*Leb 202

你可以names直接使用read_csv

names:array-like,default无要使用的列名列表.如果文件不包含标题行,则应显式传递header = None

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

下面的行不会按预期工作.names已经是一个数据帧,假设它从文件中读取时确实有4列.

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

  • 你会笑 我实际上尝试过这个,但是不知道你必须在名字旁边加上方括号.这在逻辑上是回顾过去.谢谢! (9认同)
  • 不用担心,我们都犯过那些愚蠢的错误。我也对他们有罪。 (2认同)

Ant*_*pov 108

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

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


小智 22

简单易行的解决方案:

import pandas as pd

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

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


小智 10

col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)
Run Code Online (Sandbox Code Playgroud)

做完这个,只需检查一下[显然我知道,你知道.但还是......

my_CSV_File.head()
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助......干杯


小智 6

要修改你的代码你可以简单地[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')
Run Code Online (Sandbox Code Playgroud)

但最聪明的解决方案仍然是使用pd.read_excelheader=Nonenames=columns_list.