我有这样的df:
d = pd.DataFrame(list(zip(list(range(1,10)), list(range(11,20)))), columns=['a', 'b'])
print(d)
a b
0 1 11
1 2 12
2 3 13
3 4 14
4 5 15
5 6 16
6 7 17
7 8 18
8 9 19
我想对b列中的每3行进行分组并得到总和。但是,我不想将df折叠到groupby索引。我想保留原始的a列,但我想用该行所属的组的总和值替换b列,如下所示:
d_ = pd.DataFrame(list(zip(list(range(1,10)), [36, 36, 36, 45, 45, 45, 54, 54, 54])), columns=['a', 'b'])
print(d_)
a b
0 1 36
1 2 36
2 3 36
3 4 45
4 5 45
5 6 45
6 7 54
7 8 54
8 9 54
我该怎么做呢?
d=d.assign(b=d.groupby(d.index//3)['b'].transform('sum'))
a b
0 1 36
1 2 36
2 3 36
3 4 45
4 5 45
5 6 45
6 7 54
7 8 54
8 9 54
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句