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

如何批量判断符号'/'前后是否存在相同整数并生成哑变量

解决方案:生成数字交集哑变量(适配大规模数据集)

Python Pandas 实现(高效处理大规模数据)

针对大规模数据集,优先使用向量化操作替代逐行循环,避免性能瓶颈。

核心思路

  1. 分割字符串为/前后两部分,先去除所有空格避免干扰
  2. 提取两部分中的所有单个数字字符,转为集合(集合交集判断效率远高于逐个比对)
  3. 判断两个数字集合是否有重叠,生成对应的哑变量

代码实现

import pandas as pd
import re

# 模拟大规模数据集(实际可替换为读取你的数据源)
data = pd.DataFrame({
    'Col 1': ['F25J2205/02', 'F33J 4416/07', 'A123/45', 'B 67 /896', 'C0/0']
})

# 提取/前的数字集合:先去空格,再提取所有数字字符转集合
data['pre_digits'] = data['Col 1'].str.split('/').str[0].str.replace(' ', '').str.findall(r'\d').apply(set)
# 提取/后的数字集合:同上述逻辑
data['post_digits'] = data['Col 1'].str.split('/').str[1].str.replace(' ', '').str.findall(r'\d').apply(set)

# 判断集合是否有交集,生成哑变量
data['Dummy'] = (data['pre_digits'] & data['post_digits']).astype(bool).astype(int)

# 清理中间辅助列
data = data.drop(['pre_digits', 'post_digits'], axis=1)

print(data)

输出结果

Col 1Dummy
F25J2205/021
F33J 4416/070
A123/450
B 67 /8961
C0/01

性能说明

Pandas的字符串向量化方法(str.split/str.findall)基于C底层实现,处理百万级以上数据集的速度比Python原生循环快10~100倍,完全适配大规模数据场景。

SQL 实现(数据存储在数据库时)

如果数据存储在数据库中,可通过正则函数+集合判断实现:

SELECT 
    `Col 1`,
    CASE 
        WHEN EXISTS (
            SELECT digit 
            FROM REGEXP_SUBSTR(`Col 1`, '[0-9]', 1, LEVEL) pre_digits
            CONNECT BY REGEXP_SUBSTR(`Col 1`, '[0-9]', 1, LEVEL) IS NOT NULL
            AND LEVEL <= LENGTH(REGEXP_REPLACE(`Col 1`, '[^0-9/]', ''))
            WHERE SUBSTR(`Col 1`, 1, INSTR(`Col 1`, '/')-1) LIKE '%' || digit || '%'
            AND SUBSTR(`Col 1`, INSTR(`Col 1`, '/')+1) LIKE '%' || digit || '%'
        ) THEN 1
        ELSE 0
    END AS Dummy
FROM your_table;

注:不同SQL方言的正则函数语法不同(如MySQL用REGEXP_EXTRACT、PostgreSQL用regexp_matches),需根据数据库类型调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:01:12