gpt4 book ai didi

python - 过滤数据框中至少一行满足条件的所有行

转载 作者:行者123 更新时间:2023-12-02 16:21:40 25 4
gpt4 key购买 nike

我有一个数据框,其中包含客户列表和他们购买的产品实例。我正在尝试获取一个新的数据框,该数据框排除了至少购买过一次特定产品的所有客户。例如:

d = {'Customer': ['Cust 1', 'Cust 1', 'Cust 2', 'Cust 1', 'Cust 2', 'Cust 2', 'Cust 3', 'Cust 3'], 
'Product': [1, 1, 2, 1, 1, 2, 2, 1],
'PO': ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8']}

df = pd.DataFrame(data=d)
df

输出

| |Customer |Product   |PO        |
| |:--------|:---------|:---------|
|0| Cust 1 | 1 | P1 |
|1| Cust 1 | 1 | P2 |
|2| Cust 2 | 2 | P3 |
|3| Cust 1 | 1 | P4 |
|4| Cust 2 | 1 | P5 |
|5| Cust 2 | 2 | P6 |
|6| Cust 3 | 2 | P7 |
|7| Cust 3 | 1 | P8 |

我希望能够过滤掉在任何阶段购买了产品 2 的任何客户,而不管他们还购买了什么,例如:

| |Customer |Product   |PO        |
| |:--------|:---------|:---------|
|0| Cust 1 | 1 | P1 |
|1| Cust 1 | 1 | P2 |
|2| Cust 1 | 1 | P4 |

有没有办法做到这一点?任何帮助将不胜感激!

最佳答案

使用pandas.DataFrame.groupby.filter:

new_df = df.groupby("Customer").filter(lambda x: 2 not in set(x["Product"]))
print(new_df)

输出:

  Customer  Product  PO
0 Cust 1 1 P1
1 Cust 1 1 P2
3 Cust 1 1 P4

关于python - 过滤数据框中至少一行满足条件的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65350512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com