gpt4 book ai didi

python - Groupby 和 any() |全部()

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:20 24 4
gpt4 key购买 nike

我有以下 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_IDDATEUIDACQ 的值(表示这是否是数据集中关联的 UID 的第一个订单)。

我正在尝试过滤并保留在数据集涵盖的时间段内首次下订单的用户所下的所有订单(即,此类用户的至少一个订单满足 ACQ == True )。

因此,所需的输出将是:

   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

我已经通过以下方式实现了这一目标:

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 的用户所下的所有订单?

非常感谢任何想法,谢谢!

最佳答案

您需要先使用条件,然后添加all :

print (df1.groupby('UID').filter(lambda x: (x.ACQ == False).all()))
ORDER_ID ACQ DATE UID
2 3 False 2014-01-03 1
4 5 False 2014-01-05 3
9 10 False 2014-01-10 6
0 11 False 2014-01-11 6

关于python - Groupby 和 any() |全部(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830423/

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