如何在pandas数据帧中将多行转换为多个标题头

问题描述 投票:1回答:2

所以我有一个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行,但我想从第一行和第二行多个标题提前谢谢!

python pandas
2个回答
2
投票

使用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

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

但是如果在header=[0,1]中从文件使用参数read_csv创建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
© www.soinside.com 2019 - 2024. All rights reserved.