如何将python groupby结果分配给列?

时间:2017-03-26 21:44:35

标签: python-2.7 pandas dataframe group-by

我有一个数据" last_3_days"像这样:

enter image description here

然后我将['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的回答是我想要的。但结果是这样的:

enter image description here

如何将上述内容改为此?

enter image description here

1 个答案:

答案 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是用于缺失组合的值。新列的名称将是类型的唯一值,因此最后一行将它们重命名为您想要的格式。