如何将DataFrame按多组学号列表拆分并生成DataFrame字典?
解决方法:将DataFrame按学号分组字典拆分为子DataFrame字典
假设你的学号分组字典和DataFrame示例如下(你可以直接替换成自己的数据):
# 示例:存储多组学号的字典 student_groups = { "group_1": ["2024001", "2024003", "2024005"], "group_2": ["2024002", "2024004"], "group_3": ["2024006", "2024007"] } # 示例:包含学号及其他数据的DataFrame import pandas as pd df = pd.DataFrame({ "student_id": ["2024001", "2024002", "2024003", "2024004", "2024005", "2024006", "2024007"], "name": ["张三", "李四", "王五", "赵六", "孙七", "周八", "吴九"], "score": [88, 92, 79, 95, 85, 76, 81] })
核心代码:生成子DataFrame字典
直接遍历学号分组字典,用isin()筛选对应学号的行,将结果存入新字典即可:
# 初始化空字典用于存储子DataFrame grouped_dfs = {} # 遍历分组字典,生成对应子DataFrame for group_name, student_ids in student_groups.items(): grouped_dfs[group_name] = df[df["student_id"].isin(student_ids)]
验证与使用
通过字典键名就能直接访问对应组的子DataFrame:
# 查看group_1的子DataFrame print(grouped_dfs["group_1"])
注意事项
- 类型匹配:确保DataFrame中
student_id列的类型和分组字典中学号的类型一致(比如都是字符串或整数),否则isin()可能无法匹配数据。类型不匹配时可转换:df["student_id"] = df["student_id"].astype(str) - 空组处理:如果分组字典中的学号在DataFrame里不存在,对应子DataFrame会是空的。若需跳过空组,可添加判断:
for group_name, student_ids in student_groups.items(): sub_df = df[df["student_id"].isin(student_ids)] if not sub_df.empty: grouped_dfs[group_name] = sub_df
内容的提问来源于stack exchange,提问作者Meg Ward
相关产品推荐
相关产品推荐

