Pandas read_csv:忽略第二个标题行

时间:2016-03-17 16:35:11

标签: python csv pandas

我有这样的数据文件:

# comment
# comment
Header1;Header2
Unit1;Unit2
0;123
1;231
2;512

我想使用Pandas.read_csv使用行Header1;Header2作为标题但是忽略Unit1;Unit2来阅读它们。

到目前为止我所拥有的是

pd.read_csv(datafile, sep=';', comment='#', header=[0,1])

除了它从两个标题行创建一个多重标题外,几乎可以满足我的要求:

  Header1 Header2
    Unit1   Unit2
0       0     123
1       1     231
2       2     512

如何告诉Pandas只将第一行作为标题?

编辑: 这是我想要的输出:

  Header1 Header2
0       0     123
1       1     231
2       2     512

2 个答案:

答案 0 :(得分:4)

您可以将[3]作为arg传递给skiprows

In [100]:
t="""# comment
# comment
Header1;Header2
Unit1;Unit2
0;123
1;231
2;512"""
df = pd.read_csv(io.StringIO(t), sep=';', comment='#', skiprows=[3])
df

Out[100]:
   Header1  Header2
0        0      123
1        1      231
2        2      512

修改

对于您的初始问题,您可以在已完成操作后阅读csv,然后使用droplevel覆盖列:

In [4]:
df.columns = df.columns.droplevel(1)
df

Out[4]:
   Header1  Header2
0        0      123
1        1      231
2        2      512

答案 1 :(得分:0)

否则,你可以告诉pandas使用第一行作为带有header=2选项的列名, 但是然后使用选项skiprows =[3]跳过第二行, 它给出了以下命令:

>>pd.read_csv(datafile, sep=';', comment='#', header=0, skiprows=[1])  

   Header1  Header2
0        0      123
1        1      231
2        2      512