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

Pandas按Groups分组新增first_Element列,取每组Value最小值对应首个Element

实现方法

你可以用pandas的分组聚合功能实现,核心是利用idxmin()方法获取每个分组内第一个出现的Value最小值对应的行索引,具体步骤如下:

步骤1:构造测试数据(你已有数据可跳过)

import pandas as pd

df = pd.DataFrame({
    'Groups': ['G1', 'G1', 'G1', 'G2', 'G2', 'G3', 'G3', 'G3', 'G3'],
    'Value': [1, 4, 6, 2, 1, 7, 4, 2, 2],
    'Element': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
})

步骤2:生成新列

方法1:分组取最小索引+映射实现(性能最优)

# 取每个分组第一个Value最小值对应的行索引
min_value_idx = df.groupby('Groups')['Value'].idxmin()
# 生成分组到对应Element的映射关系
group_element_map = df.loc[min_value_idx].set_index('Groups')['Element']
# 映射生成新列
df['first_Element'] = df['Groups'].map(group_element_map)

方法2:用transform直接生成(写法更简洁)

df['first_Element'] = df.groupby('Groups')['Value'].transform(
    lambda x: df.loc[x.idxmin(), 'Element']
)

说明

pandas的idxmin()方法默认返回序列中第一个出现的最小值对应的行索引,天然匹配你「多个最小值取第一个出现的Element」的需求,最终输出和你给出的预期结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:04