【问题标题】:Enumerate rows in each group starting from one从一个开始枚举每组中的行
【发布时间】:2021-05-03 15:34:18
【问题描述】:

我有一个数据框(按日期排序,为简单起见,示例中不包含日期列),如下所示:

df = pd.DataFrame(['A', 'B' , 'B', 'A', 'C', 'B'], columns=['letters'])

  letters
0       A
1       B
2       B
3       A
4       C
5       B

我想创建一个新列来计算letters 列中每个值的出现次数,并随着letters 列中出现的值增加1。我想要到达的数据框是这样的:

  letters  occurance_counter
0       A                  1
1       B                  1
2       B                  2
3       A                  2
4       C                  1
5       B                  3

任何帮助都会很棒,在此先感谢!

【问题讨论】:

    标签: python pandas dataframe count pandas-groupby


    【解决方案1】:

    您可以groupby 并使用方法cumcount

    df['occurance_counter'] = df.groupby('letters')['letters'].cumcount().add(1)
    

    结果:

      letters  occurance_counter
    0       A                  1
    1       B                  1
    2       B                  2
    3       A                  2
    4       C                  1
    5       B                  3
    

    【讨论】:

    • 这可以简化为df['occurance_counter'] = df.groupby('letters').cumcount().add(1)
    猜你喜欢
    • 2013-06-18
    • 2013-06-26
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2016-04-21
    • 2022-09-28
    • 1970-01-01
    • 2016-06-23
    相关资源
    最近更新 更多