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

如何用Python将数据列中含指定关键词的值替换为对应分类?

解决方案

你之前的replace代码是精确匹配逻辑,只有当单元格值完全等于列表里的内容时才会替换,而你需要的是包含指定关键词的模糊替换,所以没生效。下面是两种可行的实现方式:

方法1:用np.where结合str.contains(逻辑直观)

逐个处理不同关键词的替换需求,适合规则较多时分步调试:

import numpy as np
import pandas as pd

# 替换包含'car'的所有值为'car'
credit_scoring['purpose'] = np.where(
    credit_scoring['purpose'].str.contains('car', case=False, na=False),
    'car',
    credit_scoring['purpose']
)

# 替换包含'wedding'的所有值为'wedding'
credit_scoring['purpose'] = np.where(
    credit_scoring['purpose'].str.contains('wedding', case=False, na=False),
    'wedding',
    credit_scoring['purpose']
)

# 其他替换示例:把包含'real estate'或'building a property'的值统一换成'real estate'
credit_scoring['purpose'] = np.where(
    credit_scoring['purpose'].str.contains('real estate|building a property', case=False, na=False),
    'real estate',
    credit_scoring['purpose']
)

参数说明:

  • case=False:不区分关键词的大小写(比如'Car'也会被匹配),不需要的话可以改成True
  • na=False:遇到空值时不替换,保留原样

方法2:用replace配合正则表达式(更简洁)

把所有替换规则写成字典,一次性完成所有模糊替换:

# 定义替换规则:键是匹配关键词的正则表达式,值是替换后的目标内容
replace_rules = {
    r'.*car.*': 'car',
    r'.*wedding.*': 'wedding',
    r'.*(real estate|building a property).*': 'real estate'
}

# 开启regex参数,启用正则模糊匹配
credit_scoring['purpose'] = credit_scoring['purpose'].replace(replace_rules, regex=True)

说明:.*表示任意长度的任意字符,所以.*car.*能匹配所有包含'car'的字符串,你可以根据实际的取值情况,继续在字典里添加更多规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:32