我有以下数据集:
> dt
a b group
1: 1 5 a
2: 2 6 a
3: 3 7 b
4: 4 8 b
我具有以下功能:
def bigSum(a,b):
return(a.min() + b.max())
我想将此功能应用于groupby模式(按组)的a和b列,并将其分配给数据帧的新列c。我希望的结果是
> dt
a b group c
1: 1 5 a 7
2: 2 6 a 7
3: 3 7 b 11
4: 4 8 b 11
例如,如果我将使用R data.table,则将执行以下操作:
dt[, c := bigSum(a,b), by = group]
,它将完全符合我的预期。我对大熊猫中是否有类似的东西很感兴趣。
答案 0 :(得分:0)
在pandas
中,我们有transform
g = df.groupby('group')
df['out'] = g.a.transform('min') + g.b.transform('max')
df
Out[282]:
a b group out
1 1 5 a 7
2 2 6 a 7
3 3 7 b 11
4 4 8 b 11
更新
df['new'] = df.groupby('group').apply(lambda x : bigSum(x['a'],x['b'])).reindex(df.group).values
df
Out[287]:
a b group out new
1 1 5 a 7 7
2 2 6 a 7 7
3 3 7 b 11 11
4 4 8 b 11 11