我有一个下面的数据框:
cola colb
a 10
a 12
a 30
b 20
b 25
我想添加新列,例如:为每个组找到最大值,然后计算
每组内的 newcol=(max(withingroupcola)-colb)/max(withingroupcola) 如下所示:
cola colb newcol
a 10 (30-10)/30
a 12 (30-12)/30
a 30 (30-30)/30
b 20 (25-20)/25
b 25 (25-25)/25
然后在组描述中排序。我怎样才能在 pandas 数据框中做到这一点?请帮忙。 谢谢。
不是:我正在尝试缩放,如果有缩放功能请告诉我。
最佳答案
使用GroupBy.transform
对于新的系列
,然后首先减去 Series.sub
然后除以 Series.div
:
s = df.groupby('cola')['colb'].transform('max')
df['new'] = s.sub(df['colb']).div(s)
print (df)
cola colb new
0 a 10 0.666667
1 a 12 0.600000
2 a 30 0.000000
3 b 20 0.200000
4 b 25 0.000000
另一种解决方案,速度较慢:
df['new'] = df.groupby('cola')['colb'].apply(lambda x: (x.max()- x) / x.max())
关于pandas - 除以 pandas 数据框中一组内的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56968669/