基于双条目数据表关联生成合同评分与年限对应变量
解决方法
步骤1:将双条目数据表转为可匹配的长格式
先把你的宽格式双条目表,转换成包含scoring、years、percentage三列的长格式DataFrame,这是后续匹配的关键。
假设你的双条目表是如下结构(可直接从Excel/CSV读取,这里用模拟数据示例):
import pandas as pd # 模拟宽格式的双条目对照表 lookup_wide = pd.DataFrame({ 'scoring': ['S1', 'S2', 'S3'], 1: ['2%', '5%', '1%'], 2: ['4%', '7%', '3%'], # ... 这里补充3-11年的对应百分比 11: ['22%', '25%', '21%'] }) # 转成匹配用的长格式 lookup_long = lookup_wide.melt( id_vars='scoring', var_name='years', value_name='percentage' ) # 统一数据类型:years转为整数,百分比转为数值(可选,根据需求保留字符串或转成小数) lookup_long['years'] = lookup_long['years'].astype(int) lookup_long['percentage'] = lookup_long['percentage'].str.replace('%', '').astype(float) / 100
步骤2:与业务DataFrame合并匹配
用merge方法,以scoring和years作为匹配键,直接把百分比值关联到业务数据的每条记录上:
# 模拟你的业务DataFrame business_df = pd.DataFrame({ 'id': [1, 2, 3, 4], 'years': [3, 1, 11, 5], 'scoring': ['S2', 'S1', 'S3', 'S2'] }) # 左连接合并,保留所有业务记录 result_df = pd.merge(business_df, lookup_long, on=['scoring', 'years'], how='left')
执行后,result_df会新增percentage列,每条记录都对应到双条目表中的匹配值;如果存在无匹配的scoring或years,对应位置会显示NaN,方便后续处理缺失值。
关键注意点
- 确保业务DataFrame和对照表的
scoring、years数据类型完全一致,比如years都是整数类型,避免因类型不匹配导致匹配失败。 - 如果双条目表是从外部文件读取的,直接读取后执行转长格式操作即可,无需手动构建字典。
内容的提问来源于stack exchange,提问作者dsilva
相关产品推荐
相关产品推荐

