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

如何用字典替换DataFrame中字符串片段生成新DataFrame?

用字典替换DataFrame字符串列中的指定前缀片段

问题场景

现有如下DataFrame:

import pandas as pd

data = {'features': ['2q07_female', '2q06_male'], 'importance': [0.25, 0.30]}
df = pd.DataFrame(data)

需要用字典dictnames替换features列中开头的代码片段:

dictnames = {'2q07': 'color of hair', '2q06': 'color of eyes'}  # 注:原提问中字典键's2q06'应为'2q06',否则无法匹配第二个数据项

最终生成包含替换后字符串的新DataFrame。


简便实现方法

方法1:拆分拼接法(格式固定时首选)

如果features列的字符串都是[代码]_[后缀]的固定格式,直接拆分后替换再拼接最直观:

# 拆分字符串为代码和后缀两部分,仅拆分一次
df[['code', 'suffix']] = df['features'].str.split('_', n=1, expand=True)
# 用字典映射替换代码,再拼接成新的features值
df['features'] = df['code'].map(dictnames) + '_' + df['suffix']
# 移除临时生成的辅助列
df = df.drop(['code', 'suffix'], axis=1)

执行后输出:

features  importance
0  color of hair_female        0.25
1  color of eyes_male          0.30

方法2:正则替换法(格式灵活时使用)

如果features的格式不固定,或者前缀位置不确定,可以用正则匹配目标片段进行替换:

import re

# 构造正则模式:匹配开头的字典键,后面紧跟下划线
pattern = r'^(' + '|'.join(re.escape(k) for k in dictnames.keys()) + r')_'
# 用lambda函数完成匹配替换
df['features'] = df['features'].str.replace(pattern, lambda m: f"{dictnames[m.group(1)]}_", regex=True)

这个方法能适配更复杂的字符串格式,只要前缀是字典中的键即可完成替换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:22:55