python - 根据 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
解决方案
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
推荐阅读
- android - 找不到联系人应用程序的 android.provider.CONTACTS_STRUCTURE 元数据
- javascript - 为什么 moment.unix(0) 返回 1 小时?
- facebook - Facebook SDK for iOS v4.39.0 更新
- r - 如何使分类变量从低到高排序?
- java - Instant.now 等效于 java.util.Date 或 Java 7
- java - 代号一返回上一表单命令错误
- java - 使用外部数据库配置文件创建 maven jar
- .net - 使用 SemaphoreSlim 时线程被中止异常
- c# - Selenium 无法捕获 StaleElementReferenceException
- javascript - 将多个嵌套的 Promise 和 Promise 数组转换为 Observables