You need to enable JavaScript to run this app. 如何用Pythonic方法按列最大值重新分组Pandas DataFrame并关联原表
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pythonic方法按列最大值重新分组Pandas DataFrame并关联原表

问题解决方法

错误原因

你之前的操作错误在于分组层级选择错误,需要按第一级索引category(level=0)分组,而非第二级的unit_quantity(level=1)。

可行解法

解法1:直接基于多级索引操作

步骤代码如下:

# 1. 按category分组,取Count列最大值对应的索引
max_idx = grouped['Count'].groupby(level=0).idxmax()
# 2. 构造 category 到最高频unit_quantity的映射字典
category_uq_map = {cat: uq for cat, uq in max_idx}
# 3. 映射索引新增目标列
grouped['Most Frequent unit_quantity'] = grouped.index.get_level_values(0).map(category_uq_map)

解法2:重置索引后合并(可读性更高)

如果不适应多级索引操作,可以转为普通列处理:

# 1. 把多级索引转为普通列
grouped_normal = grouped.reset_index()
# 2. 计算每个category对应的最高频unit_quantity
max_uq_df = grouped_normal.groupby('category').apply(
    lambda x: x.loc[x['Count'].argmax(), 'unit_quantity']
).reset_index(name='Most Frequent unit_quantity')
# 3. 合并回原表
final_df = grouped_normal.merge(max_uq_df, on='category', how='left')
# 如需恢复多级索引可执行:final_df = final_df.set_index(['category', 'unit_quantity'])

结果验证

按你提供的示例数据,最终输出符合预期:

  • banana分组所有行的新增列取值为1EA
  • eggs分组所有行的新增列取值为100G
  • full cream milk分组所有行的新增列取值为1L

内容的提问来源于stack exchange,提问作者ℂybernetician

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 14:42:03