我有一个类似这样的数据框(请注意,OrderNumber是customerID拥有的唯一订单数的计算字段)
data = [[1, 1, 'Jacket'], [1, 2, 'T-Shirt'], [1, 3, 'Jumper'], [2, 1, 'T-Shirt'], [2, 2, 'Jacket']]
CustomerID OrderNumber Category
0 1 1 Jacket
1 1 2 T-Shirt
2 1 3 Jumper
3 2 1 T-Shirt
4 2 2 Jacket
我只想过滤或屏蔽,只显示那些在第一笔订单上满足条件的客户ID。
假设他们的第一订单必须来自夹克的类别。像这样:
df = df[(df["Category"] == 'Jacket') & (df["OrderNumber"] == 1)]
此代码现在显然将仅显示满足这些条件的那些行,因此我只看到一行。
我想看到三行,每行一个CustomerID = 1的客户的OrderNumber,第二个客户被忽略,因为即使他们的订单中有夹克,也就是OrderNumber = 2的时间。
对于如何解决这个问题,我有些困惑。任何帮助表示赞赏。
答案 0 :(得分:0)
IIUC
df[df['CustomerID'].isin(df[(df["Category"] == 'Jacket') & (df["OrderNumber"] == 1)]['CustomerID'])]