如何按Type1匹配规则用另一Dataframe填充指定列的NaN值
解决方法
实现思路
- 先将参考DataFrame转换为
Type 1到Type 2的一对一映射字典,保证匹配效率 - 对主DataFrame的
Type 2列空值,用Type 1匹配映射字典的结果填充
代码示例
假设待填充的主DataFrame为df_main,存储参考值的DataFrame为df_ref,实现代码如下:
# 生成Type1到Type2的映射字典,有序参考表重复值默认保留最后一条 type_map = df_ref.drop_duplicates('Type 1', keep='last').set_index('Type 1')['Type 2'].to_dict() # 按Type1匹配填充空值 df_main['Type 2'] = df_main['Type 2'].fillna(df_main['Type 1'].map(type_map))
代码说明
drop_duplicates方法用于处理参考表中可能存在的Type 1重复值,keep='last'参数适配参考表为有序的需求,重复时保留最后出现的对应值set_index+to_dict生成映射字典,匹配效率远高于循环遍历操作- 填充时通过主表的
Type 1字段匹配映射字典得到对应值,传入fillna即可完成定向空值填充 - 若存在主表
Type 1未在参考表中出现的情况,填充后对应位置仍为NaN,可根据业务需求再做后续处理
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

