仅转置一个级别的pandas MultiIndex dataFrame

时间:2018-03-06 16:26:42

标签: python pandas dataframe multi-index

我正在尝试重新格式化DataFrame,将行中的值转换为列。我尝试使用融化,但只是有错误。 Transpose似乎让我在那里的一部分,但给出了奇怪的输出(因为输入是我认为的分组DataFrame)

d = {'name':['bil','bil','bil','jim'],
     'col2': ['acct','law', 'acct2','law'],
     'col3': [1,2,3,55]
    }
df2 = pd.DataFrame(data=d)

df2.groupby(['name','col2']).agg({'col3':'first'})

输出:

name    col2      col3
bil     acct        1
        acct2       3
        law         2
jim     law        55

目标:

     acct acct2 law
bill 1     3     2
jim              55

1 个答案:

答案 0 :(得分:2)

您可以直接使用first。此外,您需要unstack使用自定义fill_value

(df2.groupby(['name', 'col2'])['col3']
    .first()
    .unstack(fill_value='')
    .rename_axis(None, 1))

     acct acct2 law
name               
bil     1     3   2
jim              55