根据 groupby() 条件删除 Pandas 数据帧行 [英] Drop pandas dataframe rows based on groupby() condition
本文介绍了根据 groupby() 条件删除 Pandas 数据帧行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
输入中有一个熊猫数据框:
There is a pandas dataframe on input:
store_id item_id items_sold date
1 1 0 2015-12-28
1 2 1 2015-12-28
1 1 0 2015-12-28
2 2 0 2015-12-28
2 1 1 2015-12-29
2 2 1 2015-12-29
2 1 0 2015-12-29
3 1 0 2015-12-30
3 1 0 2015-12-30
我需要删除包含从未在特定商店中出售过的商品的所有行:数据框中的 (store_id, item_id) 对 (1,1)、(3,1)
I need to drop all rows with items that have never been sold in particular store: pairs (1,1), (3,1) of (store_id, item_id) in the dataframe
我期望的输出如下:
store_id item_id items_sold date
1 2 1 2015-12-28
2 2 0 2015-12-28
2 1 1 2015-12-29
2 2 1 2015-12-29
2 1 0 2015-12-29
我已经想出了如何使用 pd.groupby()[].sum()
找到所需的 (store_id, item_id)
对,但仍然坚持删除它们来自初始数据帧
I've figured out how to find required pairs of (store_id, item_id)
using pd.groupby()[].sum()
, but stuck with dropping them from initial dataframe
推荐答案
这是您想要的吗?
In [30]: df[df.groupby(['store_id', 'item_id'])['items_sold'].transform('sum') > 0]
Out[30]:
store_id item_id items_sold date
1 1 2 1 2015-12-28
3 2 2 0 2015-12-28
4 2 1 1 2015-12-29
5 2 2 1 2015-12-29
6 2 1 0 2015-12-29
这篇关于根据 groupby() 条件删除 Pandas 数据帧行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文