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

如何在DataFrame多列中获取唯一代码对并筛选首字母不同的对

代码对统计与筛选方案

问题说明

  • 从CSV读取的DataFrame中,每行包含若干代码属性列,部分列值为None,且列数不固定
  • 统计代码对出现次数时,存在重复计数(如('F048','B65D')和('B65D','F048')被视为不同对),需合并重复项
  • 需额外生成一个结果集:仅保留两个代码首字母不同的对
  • 数据集规模较大,需高效实现方案

示例DataFrame:

import pandas as pd
from collections import Counter
from itertools import combinations

df2 = pd.DataFrame({
    '0': ['F048','B123','F048','F420'],
    '1': ['B65D', 'B65D', None, None],
    '2': ['G07C', 'F048', 'B65D', None]
})

解决方案

1. 无重复统计代码对出现次数

核心思路:先过滤每行的None值,对有效代码排序后再生成组合,确保相同代码对的顺序一致,避免重复计数。

# 遍历每行,过滤None并排序,生成标准化的代码组合
valid_pairs = []
for row in df2.values:
    # 过滤None,转为字符串避免类型问题
    codes = [str(code) for code in row if code is not None]
    # 对代码排序,确保组合顺序统一
    codes_sorted = sorted(codes)
    # 生成所有两两组合
    valid_pairs.extend(combinations(codes_sorted, 2))

# 统计组合次数
pair_counter = Counter(valid_pairs)
# 转换为DataFrame并排序
result_count = pd.DataFrame({
    'Pair': list(pair_counter.keys()),
    'Qty': list(pair_counter.values())
}).sort_values(by='Qty', ascending=False).reset_index(drop=True)

print(result_count)

输出结果:

Pair  Qty
0  (B65D, F048)    2
1  (B65D, G07C)    1
2  (F048, G07C)    1
3  (B123, B65D)    1
4  (B123, F048)    1

2. 筛选首字母不同的代码对

基于上述统计结果,通过提取代码首字母并比较,用向量操作提升效率:

# 拆分Pair列的两个代码,提取首字母
result_count['First_Letter'] = result_count['Pair'].str[0].str[0]
result_count['Second_Letter'] = result_count['Pair'].str[1].str[0]

# 筛选首字母不同的行
result_diff_initial = result_count[
    result_count['First_Letter'] != result_count['Second_Letter']
].drop(columns=['First_Letter', 'Second_Letter']).reset_index(drop=True)

print(result_diff_initial)

输出结果:

Pair  Qty
0  (B65D, F048)    2
1  (B65D, G07C)    1
2  (F048, G07C)    1
3  (B123, F048)    1

大数据集高效优化建议

  • 替换逐行循环:用df2.apply(lambda x: sorted([str(c) for c in x if c is not None]), axis=1)批量处理每行,再用itertools.chain扁平化组合结果,减少循环开销
  • 提前过滤空值:在生成组合前一次性清理所有None值,减少无效计算
  • 全程使用pandas向量化操作处理首字母筛选,避免逐行判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:43:39