我有以下pd.DataFrame
In [155]: df1
Out[155]:
ORDER_ID ACQ DATE UID
2 3 False 2014-01-03 1
3 4 True 2014-01-04 2
4 5 False 2014-01-05 3
6 7 True 2014-01-08 5
7 8 False 2014-01-08 5
9 10 False 2014-01-10 6
0 11 False 2014-01-11 6
其中每个条目都是一个顺序,其值分别为ORDER_ID
、DATE
、UID
和ACQ
(指示这是否是数据集中关联的UID
的第一个顺序)。在
我试图过滤并保留在数据集中的时间段内发出第一个订单的用户所下的所有订单(即,这些用户的订单中至少有一个满足ACQ == True
)。在
因此,期望的输出是:
^{pr2}$我通过以下方式做到了:
In [156]: df1.groupby('UID').filter(lambda x: x.ACQ.any() == True)
Out[156]:
ORDER_ID ACQ DATE UID
3 4 True 2014-01-04 2
6 7 True 2014-01-08 5
7 8 False 2014-01-08 5
然而,当我试图找到用户下的所有订单时,他们在数据集所涵盖的时间段之外发出了第一个订单(即,他们的所有订单都应该满足ACQ == False
),我似乎迷失了方向。我试过了:
In [159]: df1.groupby('UID').filter(lambda x: x.ACQ.all() == False)
Out[159]:
ORDER_ID ACQ DATE UID
2 3 False 2014-01-03 1
4 5 False 2014-01-05 3
6 7 True 2014-01-08 5 ## <- This order is an acquisition, therefore all orders with UID == 5 should be filtered out.
7 8 False 2014-01-08 5
9 10 False 2014-01-10 6
0 11 False 2014-01-11 6
我应该如何筛选出所有订单都满足ACQ == False
的用户所下的所有订单?在
任何想法都非常感谢,谢谢!在
您需要先使用条件,然后添加^{} :
相关问题 更多 >
编程相关推荐