如何在熊猫数据框中将多行转换为多个标头

时间:2019-03-21 15:20:27

标签: python pandas

所以我有一个pandas dataFrame,我想将两行变成多个标题。 所以

1    A  | A  | B   | B
2    C  | D  | C   | D
3    cat| dog|mouse|goose

    A       | B
    C  | D  | C   | D
1   cat| dog|mouse|goose

我找到了

df.columns = df.iloc[0]

工作1行,但我希望从第一行和第二行获得多个标题 预先感谢!

2 个答案:

答案 0 :(得分:2)

使用StringContext(...).f(...) 创建它,然后将其分配回

MultiIndex

答案 1 :(得分:2)

通过分配第一行和第二行来创建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

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

df = pd.read_csv(file, header=[0,1])

示例

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