How to add header row to a pandas DataFrame
我正在把一个csv文件读到
1 2 3 | 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') |
但当我应用代码时,我得到以下错误:
1 | ValueError: Shape of passed values is (1, 1), indices imply (4, 1) |
号
这个错误到底是什么意思?在python中,将头行添加到csv文件/pandas df中是一种干净的方法吗?
您可以直接在
names : array-like, default None List of column names to use. If file
contains no header row, then you should explicitly pass header=None
号
1 2 3 | Cov = pd.read_csv("path/to/file.txt", sep='\t', names=["Sequence","Start","End","Coverage"]) |
或者,您可以使用
1 2 | Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None) Cov.columns = ["Sequence","Start","End","Coverage"] |
号
1 2 | col_Names=["Sequence","Start","End","Coverage"] my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names) |
做了这件事,你只要检查一下[很明显我知道,你知道。但仍然……
1 | my_CSV_File.head() |
。
希望有帮助…干杯
要修复代码,只需将
1 2 3 | 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') |
但最聪明的解决方案仍然是将
How to add header row to a pandas DataFrame?
号
有两种情况需要考虑:
如果您有一个没有标题的数据帧,并且该数据不是来自csv,只需将其分配给
1 | df.columns = ['x', 'y', 'z'] |
。
如果数据来自csv/excel,您可以使用这里记录的
1 | df = pd.read_csv('file.csv', header=None, names=['x', 'y', 'z']) |
。
如果您已经有了一个数据帧,并且准备在数据帧的头上附加另一个级别来创建一个
1 2 3 4 5 6 7 8 | # Setup df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df A B 0 1 4 1 2 5 2 3 6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | new_level = ['C', 'D'] df.columns = [new_level, df.columns] # Similar to, # df.columns = pd.MultiIndex.from_arrays([new_level, df.columns]) df C D A B 0 1 4 1 2 5 2 3 6 df.columns MultiIndex(levels=[['C', 'D'], ['A', 'B']], codes=[[0, 1], [0, 1]]) |
。
或者,如果要添加单个头段(例如"foo"),请使用
1 2 3 4 5 6 7 8 | df.columns = pd.MultiIndex.from_product([['foo'], df.columns]) df foo A B 0 1 4 1 2 5 2 3 6 |
请注意,当您保存到csv时,它将在每列上方显示"foo":
1 2 3 4 5 6 7 8 | df.to_csv('file.csv', index=False) !cat file.csv foo,foo A,B 1,4 2,5 3,6 |
。