You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何基于分类列关联两个DataFrame求各分类最大值新增列

实现方法

无需逐行遍历DF2做匹配计算,通过「分类标签对齐+分组聚合+表关联」的方式即可高效完成需求,具体步骤如下:

  • 对齐分类标签:完全复用生成DF2时的分类转换规则(如pd.cut/pd.qcut分箱、自定义阈值判断等),在原始表DF1上生成与DF2同名的分类列,保证两边分类值完全对应。
  • 分组聚合统计:对DF1按分类列分组,直接计算剩余6个float列的最大值,得到以分类值为索引的聚合结果集。
  • 结果关联合并:以DF2的分类列为关联键,左连接聚合结果集,即可将6个最大值列批量添加到DF2中。

参考代码

假设用于生成分类的原始列为DF1的src_col,待统计最大值的6个float列为f1~f6,DF2中存储分类值的列名为cat_col:

import pandas as pd

# 1. 为DF1添加分类列,所有参数必须与生成DF2时的规则完全一致
# 以下为pd.cut分箱示例,替换为实际使用的分类逻辑即可
DF1['cat_col'] = pd.cut(
    DF1['src_col'],
    bins=[-float('inf'), 10, 25, 50, float('inf')],
    labels=['<10', '10-25', '25-50', '>50']
)

# 2. 按分类分组计算6列最大值,列名加_max后缀便于识别
agg_df = DF1.groupby('cat_col')[['f1','f2','f3','f4','f5','f6']].max().add_suffix('_max')

# 3. 合并结果到DF2
DF2 = DF2.merge(agg_df, left_on='cat_col', right_index=True, how='left')

注意:分类转换规则必须完全匹配,包括分箱边界的开闭规则、空值处理逻辑、分类标签命名,否则会出现分类匹配失败、统计值错位的问题。如果DF2中存储了生成分类时的参数,直接复用参数即可,不要手动重复硬编码阈值。

内容的提问来源于stack exchange,提问作者Dushyant Sapre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:36:21