如何使用Python Pandas复现R实现的自定义数据聚合逻辑
Pandas 实现对应R代码的分组聚合方案
你给出的R dplyr逻辑可以完全通过pandas的groupby方法实现,不需要使用pivot_table,逻辑和输出完全对齐:
完整实现代码
import pandas as pd # 按A/B/C/D/E/F六列分组,对应R的group_by逻辑,as_index=False避免分组键转为索引 df1 = df.groupby(['A', 'B', 'C', 'D', 'E', 'F'], as_index=False).agg( # 对应R的v1、v2计算规则 v1 = ('v1', lambda val: (val / 7) * 6), v2 = ('v2', lambda val: (val / 7) * 6), # 对应R的v3取分组均值 v3 = ('v3', 'mean') ) # 若需要和你给出的预期输出列完全一致,去掉不需要的F列即可 df1 = df1.drop(columns=['F'])
逻辑对齐说明
- 原R代码中每个
(A,B,C,D,E,F)的分组在你提供的样例中仅对应1行数据,因此v3取均值的结果和原始值完全一致,符合预期输出 as_index=False参数对应R代码末尾的data.frame()效果,分组键会作为普通列保留,不会转为DataFrame的索引- 该实现为pandas原生向量化操作,面对大数据量也能保持较好的运行性能
内容的提问来源于stack exchange,提问作者Prasad Patil
相关产品推荐
相关产品推荐

