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

如何用正则清洗Jobs列?保留职业词汇、去除冗余代码与"Job"单词

解决方案

问题分析

你之前的错误根源在于:df_old中的元素是字典对象,不是字符串,直接调用re.sub会因为参数类型不匹配报错;而将整个列表转为字符串后遍历,实际是在逐个处理字符,自然得不到预期结果。

正确处理步骤

我们需要针对每个字典元素提取值、清理后缀,再转换为目标格式:

  1. 定义处理单个字典的函数
import re
import pandas as pd

def clean_jobs(job_dict):
    # 提取字典所有值,去掉末尾的" Job"
    cleaned = [re.sub(r'\sJob$', '', val) for val in job_dict.values()]
    # 转换为集合格式的字符串
    return str(set(cleaned))
  1. 应用到DataFrame列上
    假设你的原始数据在DataFrame的JOBS列中,直接用apply批量处理:
df['新JOBS列'] = df['JOBS列'].apply(clean_jobs)

测试示例

# 模拟你的原始数据
data = {
    'JOBS列': [
        {"/j/03k50": "Waitress Job", "/j/055qm": "Programmer Job", "/j/02h40lc": "Marketing Job"},
        {"/j/03k50": "Waitress Job", "/j/055qm": "Programmer Job", "/j/02h40lc": "Marketing Job"},
        {"/j/055qm": "Programmer Job", "/j/02h40lc": "Marketing Job"}
    ]
}
df = pd.DataFrame(data)

# 执行处理
df['新JOBS列'] = df['JOBS列'].apply(clean_jobs)

# 输出结果
print(df['新JOBS列'])

输出结果:

0    {'Waitress', 'Programmer', 'Marketing'}
1    {'Waitress', 'Programmer', 'Marketing'}
2           {'Programmer', 'Marketing'}
Name: 新JOBS列, dtype: object

补充说明

  • 如果需要保留职业的原始顺序(集合是无序的),可以把str(set(cleaned))改成str(cleaned),得到类似["Waitress", "Programmer", "Marketing"]的格式。
  • 正则r'\sJob$'精准匹配末尾的空格加"Job",避免误删其他包含"Job"的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:50:28