如何将Pandas DataFrame转换为以Agent Name为键的多值字典?
问题:将DataFrame转换为指定格式的字典
我有一个包含Agent Name、Team、Available for production、Product Type、Air/Non-Air、PCC key列的DataFrame,具体数据如下:
Agent Name Team Available for production Product Type Air/Non-Air PCC key 0 Anjani Aggarwal APAC True Fresh AIR 0R0B 0R0B_AIR_Fresh 1 Anjani Aggarwal APAC True Fresh AIR 4H9B 4H9B_AIR_Fresh 2 Anjani Aggarwal APAC True Fresh AIR 56HB 56HB_AIR_Fresh 3 Anjani Aggarwal APAC True Fresh LAND 0R0B 0R0B_LAND_Fresh 4 Anjani Aggarwal APAC True Fresh LAND B9YJ B9YJ_LAND_Fresh 5 Anjani Aggarwal APAC True Fresh LAND G6MJ G6MJ_LAND_Fresh 6 Rohit Gusain APAC True Fresh AIR 0R0B 0R0B_AIR_Fresh 7 Rohit Gusain APAC True Fresh AIR 4H9B 4H9B_AIR_Fresh 8 Rohit Gusain APAC True Fresh AIR 56HB 56HB_AIR_Fresh 9 Rohit Gusain APAC True Fresh LAND 0R0B 0R0B_LAND_Fresh 10 Rohit Gusain APAC True Fresh LAND B9YJ B9YJ_LAND_Fresh 11 Rohit Gusain APAC True Fresh LAND G6MJ G6MJ_LAND_Fresh 12 Sakshi Malhotra APAC True Fresh AIR 0R0B 0R0B_AIR_Fresh 13 Sakshi Malhotra APAC True Fresh AIR 4H9B 4H9B_AIR_Fresh 14 Sakshi Malhotra APAC True Fresh AIR 56HB 56HB_AIR_Fresh 15 Sakshi Malhotra APAC True Fresh LAND 0R0B 0R0B_LAND_Fresh
需要将其转换为如下格式的字典:
result_dict = { 'Anjani Aggarwal': ['0R0B_AIR_Fresh','4H9B_AIR_Fresh','56HB_AIR_Fresh','0R0B_LAND_Fresh','B9YJ_LAND_Fresh','G6MJ_LAND_Fresh'], 'Rohit Gusain': ['0R0B_AIR_Fresh','4H9B_AIR_Fresh','56HB_AIR_Fresh','0R0B_LAND_Fresh','B9YJ_LAND_Fresh','G6MJ_LAND_Fresh'] }
请问该如何实现?
解决方案
可以利用Pandas的分组功能快速实现,核心逻辑是按Agent Name聚合对应的PCC key值,再转为目标字典格式。
方法一:用groupby快速生成(推荐)
这是Pandas的惯用写法,代码简洁且效率高,适合处理大规模数据:
import pandas as pd # 假设你的DataFrame名为df full_dict = df.groupby('Agent Name')['PCC key'].apply(list).to_dict() # 如果只需要示例中的特定Agent,直接筛选即可 target_agents = ['Anjani Aggarwal', 'Rohit Gusain'] result_dict = {agent: full_dict[agent] for agent in target_agents}
方法二:手动遍历构建(适合理解逻辑)
如果想更直观地理解字典构建过程,可以手动遍历DataFrame行:
result_dict = {} for _, row in df.iterrows(): agent_name = row['Agent Name'] pcc_key = row['PCC key'] # 若Agent不在字典中,先初始化空列表 if agent_name not in result_dict: result_dict[agent_name] = [] result_dict[agent_name].append(pcc_key) # 按需筛选目标Agent target_agents = ['Anjani Aggarwal', 'Rohit Gusain'] result_dict = {k: v for k, v in result_dict.items() if k in target_agents}
说明
- 方法一依赖Pandas内置的分组逻辑,运行效率远高于手动遍历,优先推荐。
- 两种方法最终都能得到目标格式的字典,若不需要保留
Sakshi Malhotra的数据,通过字典推导式筛选即可。
内容的提问来源于stack exchange,提问作者Soumya Pandey
相关产品推荐
相关产品推荐

