Python 选择具有特定订单数量的用户
我有一个带有Python 选择具有特定订单数量的用户,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有一个带有user\u id和order\u number列的数据框订单号告诉用户第n个订单。我想选择已经完成一定数量订单的用户 示例数据帧: user_id order_number 0 1 1 1 1 2 2 1 3 3 2 1 4 2 2 5 3 1 6 3 2 7 3 3 输出:[1,3] 输出应该是user\u id[1,3],因为他们完成了3个订单,但2个只完成了2个订单 我正在努力: (df.groupby(['u
user\u id
和order\u number
列的数据框<代码>订单号告诉用户第n个订单。我想选择已经完成一定数量订单的用户
示例数据帧:
user_id order_number
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 3 1
6 3 2
7 3 3
输出:[1,3]
输出应该是user\u id
[1,3]
,因为他们完成了3个订单,但2个只完成了2个订单
我正在努力:
(df.groupby(['user\u id'])['order\u number'].max()=3)
这给了我布尔级数,但如何选择只有真值的索引?执行此操作的一般方法是使用或: 对于本例,您不必获得另一列的最大值,您只需计算它们,正如@Steven所建议的:
df.groupby('user_id',as_index=False).count().query("order_number==3")
或者如@Wen所言:
df['user_id'].value_counts().loc[lambda x: x==3]
执行此操作的一般方法是使用或: 对于本例,您不必获得另一列的最大值,您只需计算它们,正如@Steven所建议的:
df.groupby('user_id',as_index=False).count().query("order_number==3")
或者如@Wen所言:
df['user_id'].value_counts().loc[lambda x: x==3]
可能还应该显示一个使用
count()
的示例,因为这是一个更可靠的解决方案(尽管它不是要求的),谢谢。不知道我们也可以在.loc[]
中使用lambda函数,也可以使用.query()
函数。@techytushar使用count
overmax
的好处是,如果您的数据不正确(例如,给定用户的订单号为1、2、4),您仍然可以用3个不同的订单匹配用户(count()
for[1,2,4]
是3
)。感谢@StevenMoseley提供的见解,这确实是真的。我将使用count()
然后。我正在Kaggle上处理InstaCart数据集。请稍候,为什么不使用value\u counts?~:-)可能还会显示一个使用count()
的示例,因为这是一个更可靠的解决方案(尽管它不是所要求的),所以对此表示感谢。不知道我们也可以在.loc[]
中使用lambda函数,也可以使用.query()
函数。@techytushar使用count
overmax
的好处是,如果您的数据不正确(例如,给定用户的订单号为1、2、4),您仍然可以用3个不同的订单匹配用户(count()
for[1,2,4]
是3
)。感谢@StevenMoseley提供的见解,这的确是事实。我将使用count()
然后。我正在Kaggle上处理InstaCart数据集。请稍候,为什么不使用value\u counts?~:-)