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

如何在Python中基于条件替换DataFrame列A的不匹配值

实现步骤

首先把df2转换成4位字符到A列值的映射字典,提升匹配效率:

# 将df2转为映射字典,键是4位字符,值是对应的A列唯一值
mapping = df2.set_index('4 digits')[0].to_dict()

接着从df1的B列提取中间4位字符(和你之前生成布尔列c的切片逻辑保持一致):

# 示例格式为A-xxxx-xxx,所以取第2到第6位字符,根据实际数据格式调整slice参数
df1['B_4digits'] = df1['B'].str.slice(start=2, stop=6)

最后定位c列为False的行,用映射字典替换对应A列的值:

# 仅对c为False的行替换A列值,若匹配不到4位字符则保留原A值(可选)
df1.loc[~df1['c'], 'A'] = df1.loc[~df1['c'], 'B_4digits'].map(mapping).fillna(df1['A'])

# 若能确保所有B列的4位字符都能在df2找到匹配,可简化为:
# df1.loc[~df1['c'], 'A'] = df1.loc[~df1['c'], 'B_4digits'].map(mapping)

效果验证

用你提供的示例数据测试后,df1第二行的A列会从A-0012-Alex替换为A-0085-John,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:39:52