首页 > 解决方案 > Pandas:如何通过某些列的值总和或按行数聚合数据?

问题描述

我有 Pandas 数据框,它很简单:

>columnA
>>1
>>20
>>3
>>4
>>15
>>0

我想以两种方式聚合这个数据框:

  1. 只需按行数聚合:例如,对每 3 行求和 columnA 值。即在这个转变之后我应该得到

    aggregatedByCount
    24
    19
    
  2. 当 columnA 中的值总和超过某个阈值时聚合,例如 10。即在此之后我应该得到

       aggregatedBySum 
          21 
          22 
    

是否可以在没有循环的情况下实现这一点?

标签: pythonpandas

解决方案


第一个选项

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

推荐阅读