我正在尝试重新格式化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
答案 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