pandas groupby对象的列操作

时间:2015-01-29 20:50:07

标签: python pandas pandas-groupby

我有一个如下所示的数据框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但是我无法找出正确的功能。

1 个答案:

答案 0 :(得分:0)

您在这里不需要groupby,只需要sortshift

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

我没有测试过这个,但它应该可以做到这一点