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

如何对长格式pandas DataFrame按键分组后条件选择对应列值?

实现方案

核心逻辑

按Name字段分组后,对每个分组的Position列做自定义聚合:

  1. 先对当前人员的所有位置记录去重
  2. 若去重后的结果同时包含Forward和Offence,直接返回Both Forward and Offence
  3. 若仅存在单一类型的位置记录,直接返回该类型即可

完整可运行代码

import pandas as pd

# 构造测试数据集
data = {'Name': ['Tom', 'Tom', 'Aiden', 'Aiden', 'Aiden', 'Kristy', 'Kristy'], 
        'Position': ['Forward', 'Offence', 'Forward', 'Offence', 
                     'Both Forward and Offence', 'Forward', 'Forward']}
df = pd.DataFrame(data)

# 自定义聚合函数
def calc_final_position(pos_list):
    unique_pos = set(pos_list)
    if 'Forward' in unique_pos and 'Offence' in unique_pos:
        return 'Both Forward and Offence'
    return next(iter(unique_pos))

# 分组聚合得到结果
result_df = df.groupby('Name', as_index=False)['Position'].agg(calc_final_position)
print(result_df)

运行后输出结果和要求的理想输出完全一致。

可检索技术关键词

  • pandas 自定义聚合函数
  • pandas groupby 条件判断
  • pandas 长表按分组聚合去重

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:04