【问题标题】:Calculate cumulative count of a pandas dataframe column计算熊猫数据框列的累计计数
【发布时间】:2022-11-14 04:24:50
【问题描述】:

我创建了这个熊猫数据框:

import numpy as np
import pandas as pd

ds = {"col1":[1,2,3,2,2,2,3,4,1,0,0,0,0,0,1,2,3,5]}

df = pd.DataFrame(data=ds)

看起来像这样:

print(df)

    col1
0      1
1      2
2      3
3      2
4      2
5      2
6      3
7      4
8      1
9      0
10     0
11     0
12     0
13     0
14     1
15     2
16     3
17     5

我需要创建一个新列 (col2),其中包含 col1 中值的累积计数。因此,生成的数据框将如下所示:

请问有人知道怎么做吗?

【问题讨论】:

    标签: python pandas dataframe cumulative-frequency


    【解决方案1】:
    import numpy as np
    import pandas as pd
    
    ds = {"col1": [1, 2, 3, 2, 2, 2, 3, 4, 1, 0, 0, 0, 0, 0, 1, 2, 3, 5]}
    
    df = pd.DataFrame(data=ds)
    
    print(df)
    df["cumsum"] = df["col1"].cumsum()
    
    print(df)
    

    【讨论】:

      【解决方案2】:

      考虑在groupby() 之后使用cumcount()。添加+1 以从 1 而不是 0 开始计数:

      df['col2'] = df.groupby('col1').cumcount()+1
      

      回报:

          col1  col2
      0      1     1
      1      2     1
      2      3     1
      3      2     2
      4      2     3
      5      2     4
      6      3     2
      7      4     1
      8      1     2
      9      0     1
      10     0     2
      11     0     3
      12     0     4
      13     0     5
      14     1     3
      15     2     5
      16     3     3
      17     5     1
      

      【讨论】:

        【解决方案3】:

        恰好有一个grouby.cumcount 函数:

        df['col2'] = df.groupby('col1').cumcount().add(1)
        

        【讨论】:

          【解决方案4】:

          您可以使用:

          df['col2']=df.groupby(['col1']).cumcount() + 1
          

          【讨论】:

            猜你喜欢
            • 2015-01-28
            • 1970-01-01
            • 1970-01-01
            • 2021-02-28
            • 1970-01-01
            • 2020-01-11
            • 1970-01-01
            • 1970-01-01
            • 2016-05-20
            相关资源
            最近更新 更多