我有熊猫数据框,它很简单:
(0, 1)
我想以两种方式聚合此数据框:
仅按行数聚合:例如,每三行求和columnA值。即经过这种转变,我应该得到
>columnA
>>1
>>20
>>3
>>4
>>15
>>0
进行汇总。在这之后我应该得到
aggregatedByCount
24
19
是否可以实现无循环?
答案 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