熊猫:如何通过某些列的值总和或行数汇总数据?

时间:2020-09-06 20:17:34

标签: python pandas

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

(0, 1)

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

  1. 仅按行数聚合:例如,每三行求和columnA值。即经过这种转变,我应该得到

    >columnA
    >>1
    >>20
    >>3
    >>4
    >>15
    >>0
    
  2. 当列A中的值之和超过某个阈值(例如10)时,
  3. 进行汇总。在这之后我应该得到

    aggregatedByCount
    24
    19
    

是否可以实现无循环?

2 个答案:

答案 0 :(得分:0)

第一个选项

df.groupby(df.index // 3).sum()

        columnA
    0       24
    1       19

第二个选项累计两次以划分阈值并在阈值建立后设置新组。

  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

答案 1 :(得分:-1)

每三行求和:

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