我正在将一个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添加一个标题行?
7条答案
按热度按时间jv4diomz1#
您可以直接在
read_csv
中使用names
names:类似于数组,默认为None要使用的列名列表。如果文件不包含标题行,则应显式传递header=None
7d7tgy0s2#
或者,您可以使用
header=None
读取csv,然后使用df.columns
添加它:pepwfjgg3#
完成此操作后,只需检查:
olqngx594#
简单易行的解决方案:
**注意:**确保您的标头长度和CSV文件标头长度不应不匹配。
63lcw9qa5#
要修复代码,只需将
[Cov]
更改为Cov.values
,pd.DataFrame
的第一个参数将变为多维numpy
数组:但最明智的解决方案仍然是将
pd.read_excel
与header=None
和names=columns_list
一起使用。c0vxltue6#
由于提到我们是从csv阅读,因此分隔符应为
','[as default, not need to mention]' and the given file has no header so
header=None '样品代码:
zz2j4svz7#
当阅读一个没有头的文件时,现有的答案正确地指出
header=
参数应该设置为None
,但是没有解释为什么。这是因为默认情况下,header=0
,这意味着文件的第一行被推断为头。例如,下面的代码用col_names
覆盖第一行,因为第一行是作为标题读取的,它被col_names
替换。注意,这里假设列之间用空格
' '
分隔。要获得正确的输出,您需要设置
header=None
:或使用
names=
参数在一次函数调用中分配列名:如果列数未知(因为
len(col_names)
必须等于从文件推断出的列数)或特定列名不重要,则通常首选header=None
方式。例如,在read_csv
之后调用add_prefix()
可以向默认列名添加前缀: