【问题标题】:How to cumulutive count several columns by condition in pandas dataframe [duplicate]如何在熊猫数据框中按条件累计计算几列[重复]
【发布时间】:2021-02-28 19:47:32
【问题描述】:

示例数据框:

df = pd.DataFrame({'column_1':['a','a','a','a','a','a','b','b','b','b','b','b','b','b','b','c','c','d','d']
                   ,'column_2':[1,1,1,2,2,2,1,1,1,2,2,2,3,3,3,1,2,2,3]
                  })

我想按条件计算每对列,编号从 1 到 N。 我想,我必须使用apply函数,但不知道如何写它的实现。

使用 .loc 循环非常慢(过滤原因)

for column_1 in df.column_1.unique():
    for column_2 in df.column_2.unique():
        condition = (df.column_1 == column_1)&(df.column_2 == column_2)
        max_range = sum(condition)
        df.loc[condition, 'result'] = range(1, max_range + 1)
df.result = df.result.astype(int)

结果:

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这是groupby().cumcount()

    df['result'] = df.groupby(['column_1','column_2']).cumcount()+1
    

    输出:

       column_1  column_2  result
    0         a         1       1
    1         a         1       2
    2         a         1       3
    3         a         2       1
    4         a         2       2
    5         a         2       3
    6         b         1       1
    7         b         1       2
    8         b         1       3
    9         b         2       1
    10        b         2       2
    11        b         2       3
    12        b         3       1
    13        b         3       2
    14        b         3       3
    15        c         1       1
    16        c         2       1
    17        d         2       1
    18        d         3       1
    

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 2015-01-28
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多