Python 熊猫:如何按某列聚合数据';s值总和还是按行计数?

Python 熊猫:如何按某列聚合数据';s值总和还是按行计数?,python,pandas,Python,Pandas,我有熊猫数据框,它非常简单: >columnA >>1 >>20 >>3 >>4 >>15 >>0 我希望通过两种方式聚合此数据帧: 只需按行数进行聚合:例如,每3行求和columnA值。也就是说,在这个转变之后,我应该 aggregatedByCount 24 19 aggregatedBySum 21 22 当列A中的值之和超过某个阈值时聚合,例如10。也就是说,在这之后

我有熊猫数据框,它非常简单:

>columnA
>>1
>>20
>>3
>>4
>>15
>>0
我希望通过两种方式聚合此数据帧:

  • 只需按行数进行聚合:例如,每3行求和columnA值。也就是说,在这个转变之后,我应该

    aggregatedByCount
    24
    19
    
       aggregatedBySum 
          21 
          22 
    
  • 当列A中的值之和超过某个阈值时聚合,例如10。也就是说,在这之后我应该

    aggregatedByCount
    24
    19
    
       aggregatedBySum 
          21 
          22 
    

  • 是否可以在没有循环的情况下实现此功能?

    第一个选项

    df.groupby(df.index // 3).sum()
    
            columnA
        0       24
        1       19
    
    第二个选项cumsum两次以划分阈值,并在阈值建立后设置新组

      df['groups']=(df.groupby(df.index ).cumsum()>10)
    df.groupby(df['groups'].shift().fillna(True)\
    .cumsum()).columnA.sum()[lambda x: x >10]
    
    
      groups
    1    21
    2    22
    

    每三行求和:

    out1 = df.groupby(np.arange(len(df)) // 3).sum()
    
    对于您的第二个请求:

    c = 0
    g = 0
    limit = 10
    grouper = []
    for val in df.columnA:
        c += val
        grouper.append(g)
        if c > 10:
            c = 0
            g += 1
    
    out2 = df.groupby(grouper).sum()
    
    输出

       columnA
    0       21
    1       22
    2        0
    

    @Miami你试过了吗?