gpt4 book ai didi

python - 如何返回涉及 Pandas 中两列的特定条件的行?

转载 作者:行者123 更新时间:2023-11-30 22:17:42 27 4
gpt4 key购买 nike

我有这个数据框:

user_id     status_id       date_created
1 1 2018-02-14 11:49:07.429000-02:00
1 4 2018-02-19 12:51:43.622000-03:00
1 3 2018-02-15 09:21:23.116000-02:00
2 3 2018-02-19 12:52:08.646000-03:00
3 3 2016-08-29 11:02:39.449000-03:00
4 4 2016-08-29 11:18:31.742000-03:00
4 2 2018-02-21 10:43:45.747000-03:00
5 3 2018-02-15 09:34:57.478000-02:00
5 2 2018-02-19 11:52:16.629000-03:00

我只想返回具有特定 status_id 且仅此特定状态的用户,因此,例如,对于 status_id=3,它应该返回以下内容:

user_id     status_id       date_created
2 3 2018-02-19 12:52:08.646000-03:00
3 3 2016-08-29 11:02:39.449000-03:00

我尝试过滤具有所需 status_id 的所有用户,但它也会返回具有多个 status_id 的用户:

> df.loc[df.user_id.isin(df.user_id.loc[df.status_id == 3])]
user_id status_id date_created
1 1 2018-02-14 11:49:07.429000-02:00
1 4 2018-02-19 12:51:43.622000-03:00
1 3 2018-02-15 09:21:23.116000-02:00
2 3 2018-02-19 12:52:08.646000-03:00
3 3 2016-08-29 11:02:39.449000-03:00
5 3 2018-02-15 09:34:57.478000-02:00
5 2 2018-02-19 11:52:16.629000-03:00

最佳答案

通过使用transform +独特

df[df.groupby('user_id').status_id.transform('nunique').eq(1)].loc[lambda x :x['status_id']==3,:]

更多信息

df.groupby('user_id').status_id.transform('nunique') # get the number of unique value within each group, after this we just need to select the group only contain one value , which is index 3,4
Out[426]:
0 3
1 3
2 3
3 1
4 1
5 2
6 2
7 2
8 2
Name: status_id, dtype: int64

关于python - 如何返回涉及 Pandas 中两列的特定条件的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562112/

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