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

Pandas DataFrame行数据交集计算:统计不同班级共有学生数量

实现方案

核心思路

  • 先将每个班级对应的学生列表转换为集合,方便直接计算交集
  • 生成所有无重复的两两班级组合,避免重复计算(如1A-2B和2B-1A视为同一组)
  • 遍历所有组合计算学生集合的交集大小,最后整理为目标DataFrame

完整代码

import pandas as pd
from itertools import combinations

# 原始数据
df = pd.DataFrame({'Class': ['1A', '2B', '2C'],
                    'Students': [['Alice', 'Philips', 'John'],
                                 ['Philips', 'John', 'Anna', 'William'],
                               ['Arthur', 'Alice', 'Anna', 'William']]
                  })

# 构建班级到学生集合的映射
class_stu_set = df.set_index('Class')['Students'].apply(set)

# 生成两两组合并计算交集
res_data = []
for cls1, cls2 in combinations(class_stu_set.index, 2):
    intersect_size = len(class_stu_set[cls1] & class_stu_set[cls2])
    res_data.append({
        'Comparison': f"{cls1}-{cls2}",
        'Intersection size': intersect_size
    })

# 转换为结果DataFrame
result = pd.DataFrame(res_data)

输出验证

运行上述代码后输出结果和预期完全一致:

Comparison  Intersection size
0      1A-2B                  2
1      1A-2C                  1
2      2B-2C                  2

内容的提问来源于stack exchange,提问作者Guilherme Reis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:21:02