标记每个 groupby 中的第一个元素

GZ-*_*GZ- 2 numpy list dataframe pandas pandas-groupby

我有一个如下所示的数据框

df = pd.DataFrame({'group':[1,1,2,2,2],'time':[1,2,3,4,5],'C':[6,7,8,9,10]})
Run Code Online (Sandbox Code Playgroud)
    group   time    C
0   1       1       6
1   1       2       7
2   2       3       8
3   2       4       9
4   2       5       10
Run Code Online (Sandbox Code Playgroud)

并且我希望将每个组中的第一个元素(就时间而言)标记为 True,即:

    group   time    C   first_in_group
0   1       1       6   True
1   1       2       7   False
2   2       3       8   True
3   2       4       9   False
4   2       5       10  False
Run Code Online (Sandbox Code Playgroud)

我尝试了 的几种组合groupbyfirst但没有达到我想要的效果。

在 Pandas 中是否有一种优雅的方式来做到这一点?

Nk0*_*k03 6

使用duplicated

df['first_in_group'] = ~df.group.duplicated()
Run Code Online (Sandbox Code Playgroud)
输出:
   group  time   C  first_in_group
0      1     1   6            True
1      1     2   7           False
2      2     3   8            True
3      2     4   9           False
4      2     5  10           False
Run Code Online (Sandbox Code Playgroud)

注意:首先进行排序(如果需要)。

df = df.sort_values(['group', 'time'])
Run Code Online (Sandbox Code Playgroud)