我有一个数据框如下。
df = pd.DataFrame({'var1' : list('a' * 3) + list('b' * 2) + list('c' * 4)
,'var2' : [i for i in range(9)]
,'var3' : [20, 40, 100, 10, 80, 12,24, 53, 90]
})
我想要的最终结果如下:
var1 var2 var3 var3_lt_50 0 a 0 20 60 1 a 1 40 60 2 a 2 100 60 3 b 3 10 10 4 b 4 80 10 5 c 5 12 36 6 c 6 24 36 7 c 7 53 36 8 c 8 90 36
根据以下代码,我通过分组和合并分两步获得此结果:
df = df.merge(df[df.var3 < 50][['var1', 'var3']].groupby('var1', as_index = False).sum().rename(columns = {'var3' : 'var3_lt_50'})
,how = 'left'
,left_on = 'var1'
,right_on = 'var1')
有人可以告诉我一种做这种类型的布尔逻辑表达式的方法+没有&#34; groupby&#34;的inter groupby标量广播+&#34;合并&#34;我今天做的一步。我想要一个更平滑的代码。
提前感谢输入,
/ Swepab