所以在 R 中,当我有一个由 4 列组成的数据框时,将其称为 df
并且我想通过一组的和乘积来计算比率,我可以这样计算:
// generate data
df = data.frame(a=c(1,1,0,1,0),b=c(1,0,0,1,0),c=c(10,5,1,5,10),d=c(3,1,2,1,2));
| a b c d |
| 1 1 10 3 |
| 1 0 5 1 |
| 0 0 1 2 |
| 1 1 5 1 |
| 0 0 10 2 |
// compute sum product ratio
df = df%>% group_by(a,b) %>%
mutate(
ratio=c/sum(c*d)
);
| a b c d ratio |
| 1 1 10 3 0.286 |
| 1 1 5 1 0.143 |
| 1 0 5 1 1 |
| 0 0 1 2 0.045 |
| 0 0 10 2 0.454 |
但是在 python 中,我需要求助于循环。我知道应该有比 python 中的原始循环更优雅的方法,有人有什么想法吗?
原文由 asosnovsky 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 pandas github 上的这个线程, 我们可以使用
transform()
方法来复制dplyr::groupby()
和dplyr::mutate()
的组合对于此示例,它将如下所示:此示例使用 pandas 方法链接。有关如何使用方法链复制
dplyr
工作 流的更多信息,请参阅此博文。使用
apply()
和groupby()
的方法对我不起作用,因为它似乎不适应。例如,如果我们从 lambda 表达式中删除g.c/
它就不起作用了。