Python Pandas:重复行求和与非数值列留首值的代码优化方案
宽DataFrame分组聚合优化方案
不用手动枚举几十列,直接通过列类型自动识别实现需求:
- 指定你的外键列名(替换成实际列名,比如
'order_id') - 自动筛选需保留首个实例的列:所有object/日期类型列,排除外键本身
- 自动筛选需求和的列:所有float类型列
- 组装聚合规则后执行分组操作
完整代码示例:
import pandas as pd # 替换成你的外键列名 foreign_key = "your_foreign_key_col" # 自动识别列:保留首值的列(object/日期类型,排除外键) keep_first_cols = df.select_dtypes(include=["object", "datetime64"]).columns.drop(foreign_key) # 自动识别求和列(float类型) sum_cols = df.select_dtypes(include=["float64"]).columns # 组装聚合规则字典 agg_rules = {col: "first" for col in keep_first_cols} agg_rules.update({col: "sum" for col in sum_cols}) # 执行分组聚合,as_index=False让外键保持为普通列而非索引 final_df = df.groupby(foreign_key, as_index=False).agg(agg_rules)
补充说明:
- 如果日期列是带时区的格式(比如
datetime64[ns, UTC]),可以调整include里的类型参数,确保能被正确识别 - 外键列在groupby后本身就是唯一值,无需额外配置保留首值规则
- 该方案自动适配列类型,后续列数变动时无需修改代码
内容的提问来源于stack exchange,提问作者Ricky
相关产品推荐
相关产品推荐

