[英]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.