【问题标题】:How to assign python groupby results to columns?如何将python groupby结果分配给列?
【发布时间】:2017-08-19 11:35:30
【问题描述】:

我有这样的数据“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 的答案是我想要的。但是结果是这样的:

上面的怎么改成这个?

【问题讨论】:

  • 将图片放在帖子上被认为是一种不好的形式。为了便于帮助,我们希望能够轻松访问生成一组工作数据。我无法复制粘贴您的图像。也就是说,如果您也有代码或文本来生成数据,我们可能不太关心您是否发布图像。

标签: python-2.7 pandas dataframe group-by


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

【讨论】:

  • 这正是我想要的。但结果与我想要的有点不同。我有关于问题描述的更新。请看一下。非常感谢!
  • 只需在末尾添加.reset_index()。
猜你喜欢
  • 2012-08-25
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 2023-02-03
  • 2010-10-22
相关资源
最近更新 更多