我有这样的数据文件:
# comment
# comment
Header1;Header2
Unit1;Unit2
0;123
1;231
2;512
Run Code Online (Sandbox Code Playgroud)
我想使用 Pandas.read_csv 读取它们,使用该行Header1;Header2作为标题但忽略Unit1;Unit2.
到目前为止我所拥有的是
pd.read_csv(datafile, sep=';', comment='#', header=[0,1])
Run Code Online (Sandbox Code Playgroud)
这几乎可以满足我的要求,除了它从两个标题行创建一个多标题:
Header1 Header2
Unit1 Unit2
0 0 123
1 1 231
2 2 512
Run Code Online (Sandbox Code Playgroud)
如何告诉 Pandas 只将第一行作为标题?
编辑:这是我想要的输出:
Header1 Header2
0 0 123
1 1 231
2 2 512
Run Code Online (Sandbox Code Playgroud)
您可以[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
Run Code Online (Sandbox Code Playgroud)
编辑
对于您最初的问题,您可以在已完成的情况下读取 csv,然后使用以下内容覆盖列droplevel:
In [4]:
df.columns = df.columns.droplevel(1)
df
Out[4]:
Header1 Header2
0 0 123
1 1 231
2 2 512
Run Code Online (Sandbox Code Playgroud)
小智 1
否则,您可以使用选项告诉 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3062 次 |
| 最近记录: |