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

如何在Pandas DataFrame中创建分组格式的字典?

按ID分组生成指定格式的字典

原始DataFrame

ID   Award   Award_ID
1    Ninja    N13
1    Ninja    N19
1    Warrior  W16
2    Alpha    A99
2    Delta    D18
3    Alpha    A101
3    Alpha    A102
3    Alpha    A103

解决方案代码

import pandas as pd

# 构造示例DataFrame
data = {
    'ID': [1,1,1,2,2,3,3,3],
    'Award': ['Ninja','Ninja','Warrior','Alpha','Delta','Alpha','Alpha','Alpha'],
    'Award_ID': ['N13','N19','W16','A99','D18','A101','A102','A103']
}
df = pd.DataFrame(data)

def format_award(group):
    # 根据Award_ID数量选择分隔符,匹配示例格式
    if len(group) == 2:
        ids = '/'.join(group)
    else:
        ids = ','.join(group)
    return f"{group.name[1]}({ids})"

# 分组处理并转换为目标字典
result = df.groupby(['ID', 'Award'])['Award_ID'].apply(format_award)\
           .groupby(level=0).apply(', '.join).to_dict()

# 输出结果
print(result)

运行结果

{1: 'Ninja(N13/N19), Warrior(W16)', 2: 'Alpha(A99), Delta(D18)', 3: 'Alpha(A101,A102,A103)'}

代码说明

  • format_award函数负责将同一奖项下的多个Award_ID按数量选择分隔符,格式化为Award(IDs)的字符串。
  • 两次分组:第一次按ID+Award分组生成单个奖项的格式化字符串,第二次按ID聚合同一ID下的所有奖项字符串。
  • 最后通过to_dict()直接转换为目标格式的字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:06:17