至少满足一个条件时显示行

时间:2020-06-18 14:16:36

标签: python pandas

我有一个类似这样的数据框(请注意,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的时间。

对于如何解决这个问题,我有些困惑。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

IIUC

df[df['CustomerID'].isin(df[(df["Category"] == 'Jacket') & (df["OrderNumber"] == 1)]['CustomerID'])]