如何将Pandas按Term分组的DataFrame字典转为学生ID列表字典?
解决方法:一键生成「学期-学生ID列表」字典
你不需要先生成分组后的DataFrame字典再逐个转换,直接通过groupby结合apply(list)(或agg(list))再转字典就能一步到位,完全符合DRY原则:
完整示例代码
import pandas as pd data = {'UW ID':[1, 2, 3, 4, 5, 6, 7, 8, 9], 'Term':[201001, 201101, 201201, 201201, 201001,201001, 201101, 201201, 201201 ]} df = pd.DataFrame(data) # 直接生成目标字典 term_id_dict = df.groupby('Term')['UW ID'].apply(list).to_dict() # 验证结果 print(term_id_dict) # 输出:{201001: [1, 5, 6], 201101: [2, 7], 201201: [3, 4, 8, 9]}
代码说明
df.groupby('Term')['UW ID']:按Term字段分组,仅保留需要的UW ID列.apply(list):将每个分组内的UW ID直接转换为列表.to_dict():将分组后的Series转换为字典,键为学期值,值为对应学生ID列表
你也可以用agg(list)替代apply(list),效果完全相同:
term_id_dict = df.groupby('Term')['UW ID'].agg(list).to_dict()
这种方法无需手动遍历分组后的DataFrame,一次性完成转换,既简洁又避免重复代码。
内容的提问来源于stack exchange,提问作者Meg Ward
相关产品推荐
相关产品推荐

