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
我希望通过两种方式聚合此数据帧:
aggregatedByCount
24
19
aggregatedBySum
21
22
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你试过了吗?