如何将Pandas DataFrame指定两列转换为Python字典?
将Pandas DataFrame的两列转换为指定格式的字典
假设我们有如下的Pandas DataFrame:
import pandas as pd data = { 'ID': ['A', 'A', 'B', 'B', 'C', 'D', 'D', 'D'], 'Subject': ['Elec202', 'Comp101', 'E2', 'Comp222', 'Comp123', 'E1', 'Elec102', 'Comp295'], 'Reference': [23232, 12456, 54235, 56654, 54467, 21345, 85464, 23438] } df = pd.DataFrame(data)
要将其中的ID和Subject两列转换为目标格式的字典,可通过以下方式实现:
方法一:生成元组值的字典
通过groupby分组后,将每组的Subject转为元组再转成字典:
subject_details = df.groupby('ID')['Subject'].apply(tuple).to_dict()
执行结果:
{"A": ("Elec202", "Comp101"), "B": ("E2", "Comp222"), "C": ("Comp123",), # 单元素元组形式 "D": ("E1", "Elec102", "Comp295") }
方法二:匹配期望的单元素格式
如果希望单个Subject的条目是字符串而非单元素元组,可添加逻辑判断:
subject_details = df.groupby('ID')['Subject'].apply(lambda x: tuple(x) if len(x) > 1 else x.iloc[0]).to_dict()
此时结果完全符合需求:
{"A": ("Elec202", "Comp101"), "B": ("E2", "Comp222"), "C": "Comp123", "D": ("E1", "Elec102", "Comp295") }
代码说明
groupby('ID')['Subject']:按ID列分组,仅保留Subject列数据apply(tuple)/自定义lambda:将每组内的Subject值转换为元组(或单个字符串)to_dict():将分组结果转换为以ID为键、对应Subject集合为值的字典
内容的提问来源于stack exchange,提问作者B A C H A S H
相关产品推荐
相关产品推荐

