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

如何用正则表达式从Pandas列中提取NAICS编码?

解决方案

1. 解决KeyError问题

  • 执行print(df.columns)查看DataFrame的所有列名,确认是否存在'Company'列(注意大小写、空格等细节)。如果列名有误,将代码中的'Company'替换为实际的列名即可。

2. 正确提取NAICS编码

原正则仅提取所有数字,会误匹配名称中的数字,且未处理多组NAICS的情况。以下是精准提取的实现:

完整代码

import pandas as pd
import re

def extract_naics(text):
    # 处理空值(NaN)
    if pd.isna(text):
        return ""
    # 匹配所有NAICS字段后的编码内容
    naics_groups = re.findall(r'NAICS:\s*([\d, ]+)', text)
    # 把每组编码内的逗号分隔替换为分号,再合并所有组
    return "; ".join([group.replace(", ", "; ") for group in naics_groups])

# 应用到DataFrame(确保列名正确)
df['NAICS'] = df['Company'].apply(extract_naics)

正则说明

r'NAICS:\s*([\d, ]+)':

  • NAICS:\s* 匹配"NAICS:"及后面的任意空白字符
  • ([\d, ]+) 捕获数字、逗号、空格组成的编码字符串,确保拿到每组NAICS的完整内容

效果验证

针对你的示例数据,处理后会得到:

711211
711211
813212

517112; 551112; 711211

524114; 711211; 523999; 531110

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:18:21