首页 > 解决方案 > 根据 Group By 列执行计算,然后我必须将该值传递给数据框中的新列

问题描述

我有以下数据框:

id  numerator denominator 
1     1          2
1     5          6
1     8          9
2     4          6
3     8          9
3     2          5

基于 id 的第一个 groupby

id  numerator denominator
1     14          17
2      4           6
3     10          14

相同df的最终计算

id  numerator denominator ratio
1     1          2        14/17
1     5          6        14/17
1     8          9        14/17
2     4          6         4/6
3     8          9        10/14
3     2          5        10/14

标签: pythonpandasdataframepandas-groupby

解决方案


使用GroupBy.transform

df['ratio'] = df.groupby('id').transform('sum').eval('numerator/denominator')
print (df)
   id  numerator  denominator     ratio
0   1          1            2  0.823529
1   1          5            6  0.823529
2   1          8            9  0.823529
3   2          4            6  0.666667
4   3          8            9  0.714286
5   3          2            5  0.714286

推荐阅读