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

如何在Python DataFrame中结合两列使用startswith按前缀匹配生成新列

Python DataFrame 基于A、B列生成C列实现方案

实现逻辑

  • 先定义前缀与输出结果的映射规则
  • 分别提取A、B列每条数据的前4个字符,长度不足4的取完整值避免报错
  • 只要任意一列的前4位匹配映射规则,就返回对应的结果

完整代码示例

import pandas as pd

# 定义前缀匹配规则
prefix_map = {
    'INKA': 'KAR',
    'IDKA': 'KAR',
    'INAP': 'AP',
    'IDAP': 'AP',
    'INRJ': 'RAJ',
    'IDRJ': 'RAJ'
}

# 构造测试数据(对应你提供的样例)
data = {
    'A': [
        'IDKA106829_KMGL_H_Z_8121', 'IDKA101971_KUDU_H_Z_8251', 'SIRA_RPTR',
        'IDAP104327_PEDA_H_Z_8251', 'IDAP103547_RAMP_H_Z_8251', 'SALURU',
        'IDRJ103411_KOTA_H_Z_8251', 'IDRJ100041_BKNR_H_Z_8251', 'JAIPR203'
    ],
    'B': [
        'INKA100345_KMGL_H_Z_8251', 'YEDTHADY-IND', 'IDKA102853_KSIR_H_Z_8251',
        'IDAP104769_URUM_H_Z_8251', 'MADDIRALA', 'IDAP103620_SALU_H_Z_8251',
        'KOT009', 'INRJ200420_BKNR_H_Z_8251', 'INRJ200420_BKNR_H_Z_8251'
    ]
}
df = pd.DataFrame(data)

# 提取A、B列的前4位前缀
df['a_prefix'] = df['A'].str[:4]
df['b_prefix'] = df['B'].str[:4]

# 生成C列,默认优先匹配A列前缀,可调整顺序修改优先级
df['C'] = df.apply(
    lambda x: prefix_map.get(x['a_prefix'], prefix_map.get(x['b_prefix'], None)),
    axis=1
)

# 删除临时生成的前缀列
df = df.drop(columns=['a_prefix', 'b_prefix'])

# 输出结果查看
print(df)

结果说明

运行上述代码生成的C列和你提供的样例完全匹配,若存在A、B列同时匹配不同前缀的场景,调整lambda中prefix_map.get的参数顺序即可调整匹配优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:48:04