我有一个数据" last_3_days"像这样:
然后我将['user_id','sku_id','type']
分组并计算每个'类型的数量'每个['user_id','sku_id']
对。
如何将groupby结果分配给每个['user_id','sku_id']
对?对于每个['user_id','sku_id']
对,他们应该包含以下附加列:['type1_count','type2_count',...,'type6_count']
每列表示该类型的计数'。 '类型中有6种类型。列。
更新: @ gereleth的回答是我想要的。但结果是这样的:
如何将上述内容改为此?
答案 0 :(得分:1)
我认为你想在groupby结果上使用unstack
。
df = (last_౩_days.groupby('user_id', 'sku_id','type')
.size().unstack(fill_value=0)
.add_prefix('type').add_suffix('count'))
Unstack会将最后一级索引转换为列。 fill_value
是用于缺失组合的值。新列的名称将是类型的唯一值,因此最后一行将它们重命名为您想要的格式。