如何在 Pandas 数据框中将多行转换为多个标题

Ben*_*gya 5 python pandas

所以我有一个熊猫数据框,我想将两行变成多个标题。所以从

1    A  | A  | B   | B
2    C  | D  | C   | D
3    cat| dog|mouse|goose
Run Code Online (Sandbox Code Playgroud)

    A       | B
    C  | D  | C   | D
1   cat| dog|mouse|goose
Run Code Online (Sandbox Code Playgroud)

我发现

df.columns = df.iloc[0]
Run Code Online (Sandbox Code Playgroud)

为 1 行工作,但我想要第一行和第二行的多个标题提前致谢!

jez*_*ael 6

MultiIndex通过分配第一行和第二行创建,最后按位置过滤掉第一行DataFrame.iloc

df.columns = [df.iloc[0].values, df.iloc[1].values]
df = df.iloc[2:].reset_index(drop=True)
print (df)
     A           B       
     C    D      C      D
0  cat  dog  mouse  goose
Run Code Online (Sandbox Code Playgroud)

但更好的,如果从文件中使用的参数创建数据帧header=[0,1]read_csv

df = pd.read_csv(file, header=[0,1])
Run Code Online (Sandbox Code Playgroud)

样品

import pandas as pd

temp=u"""A,A,B,B
C,D,C,D
cat,dog,mouse,goose"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), header=[0,1])
print (df)

     A           B       
     C    D      C      D
0  cat  dog  mouse  goose
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

使用MultiIndex创建它,然后将其分配回来

df.columns=pd.MultiIndex.from_arrays([df.iloc[0],df.iloc[1]])
yourdf=df.iloc[2:].reset_index(drop=True)
yourdf
Out[52]: 
1    A           B       
2    C    D      C      D
0  cat  dog  mouse  goose
Run Code Online (Sandbox Code Playgroud)