You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:40:54