【问题标题】:Drop pandas dataframe rows based on groupby() condition根据 groupby() 条件删除 pandas 数据帧行
【发布时间】:2016-06-28 10:19:52
【问题描述】:

输入上有一个熊猫数据框:

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

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这就是你想要的吗?

    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
    

    【讨论】:

    • 没错!谢谢
    • 多么漂亮的答案
    猜你喜欢
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2021-04-02
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多