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
over
max
的好处是,如果您的数据不正确(例如,给定用户的订单号为1、2、4),您仍然可以用3个不同的订单匹配用户(
count()
for
[1,2,4]
3
)。感谢@StevenMoseley提供的见解,这确实是真的。我将使用
count()
然后。我正在Kaggle上处理InstaCart数据集。请稍候,为什么不使用value\u counts?~:-)可能还会显示一个使用
count()
的示例,因为这是一个更可靠的解决方案(尽管它不是所要求的),所以对此表示感谢。不知道我们也可以在
.loc[]
中使用lambda函数,也可以使用
.query()
函数。@techytushar使用
count
over
max
的好处是,如果您的数据不正确(例如,给定用户的订单号为1、2、4),您仍然可以用3个不同的订单匹配用户(
count()
for
[1,2,4]
3
)。感谢@StevenMoseley提供的见解,这的确是事实。我将使用
count()
然后。我正在Kaggle上处理InstaCart数据集。请稍候,为什么不使用value\u counts?~:-)