如何在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
相关产品推荐
相关产品推荐

