【问题标题】:Need a cumsum of each name in a single column [duplicate]需要单个列中每个名称的 cumsum [重复]
【发布时间】:2022-01-22 12:33:17
【问题描述】:

我需要 df['Name'] 列中每个名称的累积总和,但是当新名称出现在列中时,我需要重置计数。我将如何在熊猫中实现这一点?我用df.cumsumdf.rolling 等尝试了各种方法,但都没有成功。

Name
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown

期望的输出:

Name    Count
Devonta Freeman 1
Devonta Freeman 2
Devonta Freeman 3
Devonta Freeman 4
Devonta Freeman 5
Devonta Freeman 6
Devonta Freeman 7
Devonta Freeman 8
Devonta Freeman 9
Devonta Freeman 10
Devonta Freeman 11
Devonta Freeman 12
Devonta Freeman 13
Devonta Freeman 14
Devonta Freeman 15
Antonio Brown   1
Antonio Brown   2
Antonio Brown   3
Antonio Brown   4
Antonio Brown   5
Antonio Brown   6
Antonio Brown   7
Antonio Brown   8
Antonio Brown   9
Antonio Brown   10
Antonio Brown   11
Antonio Brown   12
Antonio Brown   13
Antonio Brown   14
Antonio Brown   15
Antonio Brown   16
Antonio Brown   17

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您正在寻找cumcount

    df['Count'] = df.groupby('Name').cumcount()
    

    输出:

    >>> df
                   Name  Count
    0   Devonta Freeman      1
    1   Devonta Freeman      2
    2   Devonta Freeman      3
    3   Devonta Freeman      4
    4   Devonta Freeman      5
    5   Devonta Freeman      6
    6   Devonta Freeman      7
    7   Devonta Freeman      8
    8   Devonta Freeman      9
    9   Devonta Freeman     10
    10  Devonta Freeman     11
    11  Devonta Freeman     12
    12  Devonta Freeman     13
    13  Devonta Freeman     14
    14  Devonta Freeman     15
    15    Antonio Brown      1
    16    Antonio Brown      2
    17    Antonio Brown      3
    18    Antonio Brown      4
    19    Antonio Brown      5
    20    Antonio Brown      6
    21    Antonio Brown      7
    22    Antonio Brown      8
    23    Antonio Brown      9
    24    Antonio Brown     10
    25    Antonio Brown     11
    26    Antonio Brown     12
    27    Antonio Brown     13
    28    Antonio Brown     14
    29    Antonio Brown     15
    30    Antonio Brown     16
    31    Antonio Brown     17
    

    【讨论】:

    • 有没有办法从 1 开始计数?
    • 是的。从字面上看只是add(1)+ 1。现在检查答案。
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多