使用Python计算列间共同值数量及多列交集统计
Python实现列间共同值与全列交集统计
首先是待处理的表格数据:
| A | B | C |
|---|---|---|
| A 1 | B 1 | A 2 |
| B 1 | C 2 | B 1 |
| C 1 | D 1 | |
| D1 |
实现代码
以下代码会先提取每列的有效数据(过滤空值),再计算任意两列的共同唯一值数量,以及所有列的交集唯一值数量:
# 定义表格数据,空值用空字符串表示 table_data = [ ["A 1", "B 1", "A 2"], ["B 1", "C 2", "B 1"], ["C 1", "", "D 1"], ["D1", "", ""] ] # 提取每列的有效数据(过滤空值)并转为集合(自动去重) col_names = ["A", "B", "C"] column_sets = [] for idx in range(len(col_names)): valid_values = [row[idx] for row in table_data if row[idx].strip()] column_sets.append(set(valid_values)) # 计算任意两列的共同值数量 print("=== 两两列共同唯一值数量 ===") for i in range(len(col_names)): for j in range(i + 1, len(col_names)): common_num = len(column_sets[i] & column_sets[j]) print(f"{col_names[i]} & {col_names[j]}: {common_num}") # 计算所有列的交集值数量 print("\n=== 全列交集唯一值数量 ===") if len(column_sets) >= 2: total_intersection = column_sets[0] for s in column_sets[1:]: total_intersection.intersection_update(s) print(f"所有列共同值数量: {len(total_intersection)}") else: print("仅单列,无需计算交集")
运行结果
=== 两两列共同唯一值数量 === A & B: 1 A & C: 1 B & C: 1 === 全列交集唯一值数量 === 所有列共同值数量: 1
说明
- 代码中用集合处理是因为默认统计唯一值的交集/共同数量,如果需要统计包含重复出现的次数,可以把集合换成列表,用
sum(1 for val in col1 if val in col2)这类逻辑统计匹配次数。 - 空值会被自动过滤,不参与统计。
内容的提问来源于stack exchange,提问作者user21058704
相关产品推荐
相关产品推荐

