根据groupby()条件删除pandas数据帧行

时间:2016-06-28 10:19:53

标签: python pandas

输入中有一个pandas数据框:

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)

我期待的输出如下:

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

我已经找到了如何使用(store_id, item_id)查找所需的pd.groupby()[].sum()对,但坚持从初始数据框中删除它们

1 个答案:

答案 0 :(得分:6)

是你想要的吗?

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