我有一个如下所示的数据框df
:
id Category Time
1 176 12 00:00:00
2 4956 2 00:00:00
3 583 4 00:00:04
4 9395 2 00:00:24
5 176 12 00:03:23
这基本上是他们在特定id
使用的category
项和Time
项。我使用df.groupby['id']
然后我想查看他们是使用相同类别还是不同,并分别指定True或False(或NaN
,如果那是该特定id
的第一项。我还会过滤掉数据以删除只有一个id
的所有Time
。
例如,其中一个组可能看起来像
id Category Time
1 176 12 00:00:00
2 176 12 00:03:23
3 176 2 00:04:34
4 176 2 00:04:54
5 176 2 00:05:23
我想执行一个操作来获取
id Category Time Transition
1 176 12 00:00:00 NaN
2 176 12 00:03:23 False
3 176 2 00:04:34 True
4 176 2 00:04:54 False
5 176 2 00:05:23 False
我考虑在apply
之后对Category
列进行某种groupby
但是我无法找出正确的功能。
答案 0 :(得分:0)
您在这里不需要groupby
,只需要sort
和shift
。
df.sort(['id', 'Time'], inplace=True)
df['Transition'] = df.Category != df.Category.shift(1)
df.loc[df.id != df.id.shift(1), 'Transition'] = np.nan
我没有测试过这个,但它应该可以做到这一点