繁体   English   中英

Python Pandas Dataframe - 基于 Groupby 和过滤条件的丢弃组

[英]Python Pandas Dataframe - Drop group based on Groupby and filter condition

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

order_id product_id 购买日期
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' object 不可调用

利用:

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')]

另一种解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM