pandas - 除以 pandas 数据框中一组内的最大值

标签 pandas dataframe group-by max

我有一个下面的数据框:

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/

相关文章:

python - Plotly:根据导出数据中的列设置标记大小?

mysql - SQL 分组依据 : Get values of 'max' record

mysql - mysql中如何限制变量的增量

python - 如何根据特定条件转换和创建具有0和1的pandas列

python - Pandas:动态计算流失发生的位置

r - 如何将 emmeans对比() 的结果导出到数据框?

python - 在 pandas 数据框中查找频繁用户

python - 根据另一列中的字符串内容在 pandas 中创建类别列

python-3.x - 如何在Python中将具有相同值的两行合并为单行?

python - Pandas :分别对每一列进行排序