【问题标题】:Label the first element in each groupby标记每个 groupby 中的第一个元素
【发布时间】:2021-09-11 01:40:26
【问题描述】:

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

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

我希望将每个组中的第一个元素(按时间)标记为 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

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

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

【问题讨论】:

    标签: pandas list dataframe numpy pandas-groupby


    【解决方案1】:

    使用duplicated:

    df['first_in_group'] = ~df.group.duplicated()
    
    输出:
       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
    

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

    df = df.sort_values(['group', 'time'])
    

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 1970-01-01
      • 2021-05-26
      • 2012-09-03
      • 1970-01-01
      • 2019-11-17
      • 2019-06-20
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多