我有一个python脚本,我已经使用pandas读取了csv文件:
colnames = ['col1','col2','col3','col4','col5','col6','col7','col8','col9','col10']
csv_input = pd.read_csv(ifile, names=colnames)
CSV文件中填充了大量不受欢迎的垃圾,但我想使用的列名由col1中DataName的行定义。
csv_names = csv_input[csv_input.col1 == 'DataName']
实际数据在col1中的DataValue行中,我不需要其余的。
csv_input = csv_input[csv_input.col1 == 'DataValue']
我想要做的是使用csv_names的值重命名csv_input中的列,但我找不到正确的语法来执行此操作。我试过了
csv_input.columns = csv_names.values
哪个给出了错误
ValueError: Length mismatch: Expected axis has 10 elements, new values have 1 elements
任何建议都非常感谢。
答案 0 :(得分:0)
你应该可以像这样直接分配它们:
In [28]:
df = pd.DataFrame({'a':[0,'e',1], 'b':[0,'f',2],'c':[0,'g',2]})
df
Out[28]:
a b c
0 0 0 0
1 e f g
2 1 2 2
In [29]:
df.columns = df.loc[1]
df
Out[29]:
1 e f g
0 0 0 0
1 e f g
2 1 2 2
所以在你的情况下只做:
csv_input.columns = csv_names