我有一个数据框,如下所示:
d = pd.DataFrame({'name':['bil','bil','bil','bil','jim', 'jim',
'jim', 'jim'],'col2': ['acct1','law', 'acct1','law', 'acct1','law',
'acct1','law'],'col3': ['a','b','c', 'd', 'e', 'f', 'g', 'h']
})
col2 col3 name
0 acct1 a bil
1 law b bil
2 acct1 c bil
3 law d bil
4 acct1 e jim
5 law f jim
6 acct1 g jim
7 law h jim
我尝试使用转换为以下格式,但不确定如何进行此操作:
d = d.groupby(['name', 'col2'])['col3'].apply(lambda x:
x.reset_index(drop=True)).unstack().reset_index()
name col2 0 1
0 bil acct1 a c
1 bil law b d
2 jim acct1 e g
3 jim law f h
我期望的格式如下所示:
acc1 law name
0 a b bil
1 c d bil
2 e f jim
3 g h jim
答案 0 :(得分:1)
将GroupBy.cumcount
用于计数器Series
,通过DataFrame.set_index
创建MultiIndex
,然后通过Series.unstack
和{通过第二级(col2
)重塑形状{1}},因为python从1
开始计数:
0