我有这个数据框:
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
答案 0 :(得分:3)
使用transform
+ i = 1
substitute(tau[CODE],list(CODE=i))
#tau[1]
nunique
更多信息
df[df.groupby('user_id').status_id.transform('nunique').eq(1)].loc[lambda x :x['status_id']==3,:]
答案 1 :(得分:0)