我有3列 - _a,_b,_c。
import numpy as np
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,3,5,3,7,3,9], '_c':[10,11,12,13,14,15,16], 'a_b_3:[21,21,21,13,13,15,15]'})
df
_a _b _c a_b_3
0 1 3 10 21
1 1 3 11 21
2 1 5 12 21
3 2 3 13 13
4 2 7 14 13
5 3 3 15 15
6 3 9 16 15
我需要创建列a_b_3(_b = 3的所有值_c由_a加起来)使用来自pandas的groupby。提前谢谢。
答案 0 :(得分:1)
使用:
df['a_b_3'] = df['_a'].map(df[df['_b'] == 3].groupby('_a')['_c'].sum())
输出:
_a _b _c a_b_3
0 1 3 10 21
1 1 3 11 21
2 1 5 12 21
3 2 3 13 13
4 2 7 14 13
5 3 3 15 15
6 3 9 16 15
<强> 解释 强>
首先过滤到只有_b等于3的记录,然后按_a和sum分组以创建一个系列。使用该系列映射回原始数据框中的_a值。