我不知所措,不知道该怎么办,我希望有人能帮忙。
我有一个包含personID、sportPlayed和date的数据集。我需要循环通过每个人(personID),只返回那些打过篮球,然后踢过足球的人。在下面的示例中,将只返回personID 1和personID 3。personID 4玩足球,但他们不会被退还,因为他们以前玩过足球,而不是篮球。
你知道怎么解决这个问题吗?谢谢!
personID sportPlayed date
1 Basketball 2020-01-01
1 Basketball 2020-01-02
1 Football 2020-03-01
2 Baseball 2020-02-05
2 Baseball 2020-03-05
3 Basketball 2020-04-01
3 Football 2020-05-05
4 Soccer 2020-02-01
4 Football 2020-02-06
发布于 2020-08-27 02:08:06
找出某人打篮球的最早日期,然后检查这是否在他们踢足球的最后日期之前。然后过滤序列并获得索引。
不具备这两项的人不会出现在输出中,但是如果你只关心那些True
的玩家,那就没问题了。
s = (df[df['sportPlayed'].eq('Basketball')].groupby('personID').date.min()
.lt(df[df['sportPlayed'].eq('Football')].groupby('personID').date.max()))
#personID
#1 True
#3 True
#4 False
#Name: date, dtype: bool
s[s].index
#Int64Index([1, 3], dtype='int64', name='personID')
https://stackoverflow.com/questions/63603321
复制相似问题