如何用Python基于匹配条件合并两个Excel数据集并添加新列?
解决方案
提取典礼编号中的数字
先从df1的ceremony_number列里提取纯数字,把"1st""2nd"这类格式转成对应整数:
import re df1['ceremony_num'] = df1['ceremony_number'].apply(lambda x: int(re.search(r'\d+', x).group()))
匹配df2的日期列
方法一:用map快速关联
把df2的index设为索引,直接用提取出的数字列映射对应的日期:
df1['date_oscar'] = df1['ceremony_num'].map(df2.set_index('index')['dates'])
方法二:用merge合并数据
如果更习惯用合并操作,直接按数字列匹配:
df1 = df1.merge(df2, left_on='ceremony_num', right_on='index', how='left') # 重命名列并清理临时列 df1.rename(columns={'dates': 'date_oscar'}, inplace=True) df1.drop(columns=['ceremony_num', 'index'], inplace=True)
避免空DataFrame的关键细节
- 确保df2的
index列和提取出的ceremony_num都是整数类型,类型不匹配会导致匹配失败 - 检查df1的
ceremony_number格式是否统一,遇到非标准格式(比如含特殊字符)要先清理 - 合并时用
how='left',保留df1所有原始行,防止因匹配不上丢失数据导致空DataFrame
内容的提问来源于stack exchange,提问作者victor_sanger
相关产品推荐
相关产品推荐

