【发布时间】:2018-05-15 14:24:12
【问题描述】:
我需要在groupby.size() 之后恢复索引,或者让它可用但有点不适用于.size()。我已经阅读了 Pandas - Restore Index after Groupby 的 stackoverflow 帖子,但所有帮助回复都严格使用 max() 聚合函数,其他人呢?
一些代码示例:
df
Out[39]:
product_id
order_id
2103 7546
2103 8278
2103 6790
2104 7546
2104 8278
2104 6790
df.groupby('product_id', as_index=True).size()
Out[67]:
product_id
3587 1
3590 1
3680 2
6735 5
6744 1
6759 6
df.groupby('product_id', as_index=False).size()
Out[68]:
product_id
3587 1
3590 1
3680 2
6735 5
6744 1
6759 6
正如您在将 as_index 参数更改为 True 或 False 后看到的那样,索引没有任何反应。但一切都适用于.max() aggr 函数。所以,无论如何,问题是如何在groupby.size() 之后恢复索引。
预期输出:
product_id
index
2103 3587 1
2104 3590 1
2188 3680 2
2188 6735 5
2188 6744 1
2188 6759 6
【问题讨论】:
-
你的意思是恢复这里?
-
as_index将返回的分组对象标签作为索引处理,而不是它们在 df 中的相应索引。你能显示预期的输出吗? -
您只想添加一个具有
product_id计数的列吗?在这种情况下,您可以使用df['count'] = df.product_id.map(df.product_id.value_counts())。 -
@Wen 我的意思是在 df 中有索引“order_id”被视为 groupby 之后数据帧中的索引
-
对于
product_id6790,有两个不同的order_id。应该显示哪一个?
标签: python pandas pandas-groupby