【问题标题】:Python Pandas Dataframe - Drop group based on Groupby and filter conditionPython Pandas Dataframe - 基于 Groupby 和过滤条件的删除组
【发布时间】:2021-05-13 05:47:31
【问题描述】:

我有一个包含以下列的数据框。我想按订单号对数据进行分组,然后删除所有不包含特定项目的组。

order_id product_id purchase_date
1234 23546.0. 2020-01-10.
1234. 32423.0 2020-01-10.
5678. 43244.0. 2020-02-10.

当我使用下面的行时,如果没有删除 order_id 5678

df6 = df2.groupby(by='order_id').filter(lambda df2: df2['product_id'] == 23546.0)

我得到错误: 'DataFrame' 对象不可调用

【问题讨论】:

  • 你能发布完整的回溯吗?

标签: python pandas


【解决方案1】:

用途:

df.loc[df['product_id'].eq('23546.0.').groupby(df['order_id']).transform('any')]

   order_id product_id purchase_date
0    1234.0   23546.0.   2020-01-10.
1    1234.0    32423.0   2020-01-10.

如果 product_id 是浮动的

df.loc[df['product_id'].eq(23546.0).groupby(df['order_id']).transform('any')]

【讨论】:

    【解决方案2】:

    另一种解决方案:

    df_out = df.groupby(by="order_id").filter(lambda x: 23546.0 in x["product_id"].values)
    print(df_out)
    

    打印:

       order_id  product_id purchase_date
    0    1234.0     23546.0    2020-01-10
    1    1234.0     32423.0    2020-01-10
    

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 2019-04-10
      • 2020-10-10
      • 1970-01-01
      • 2016-08-28
      • 2022-07-08
      • 2016-01-18
      • 2014-09-05
      • 2018-07-22
      相关资源
      最近更新 更多