创建辅助键(通过使用
cumcount
)此处用于删除错误
Index contains duplicate
df.assign(helpkey=df.groupby('type').cumcount()).set_index(['id','type','helpkey']).variable.unstack([-2,-1])
Out[138]:
type a b c \
helpkey 0 1 2 0 1 2 0 1
id
A item_1 item_2 item_3 item_4 item_5 item_6 item_7 item_8
type
helpkey 2
id
A item_9
我们还可以使用
crosstab
pd.crosstab(index=df.id,columns=[df.type,df.groupby('type').cumcount()],values=df.variable,aggfunc='sum')
Out[144]:
type a b c
col_1 0 1 2 0 1 2 0 1 2
id
A item_1 item_2 item_3 item_4 item_5 item_6 item_7 item_8 item_9
或
pivot_table
:
df.assign(helpkey=df.groupby('type').cumcount()).pivot_table(index='id',columns=['type','helpkey'],values='variable', aggfunc='sum')