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

如何基于city及列匹配将filling DataFrame填充到mask的NaN空位中

解决方案

你可以直接利用pandas.DataFrame.fillna()的自动对齐特性实现需求,代码如下:

# 先保存原mask的索引与列顺序,避免操作后结构错乱
origin_index = mask.index
origin_cols = mask.columns

# 将mask临时设置city为索引,用filling按索引+列名匹配填充NaN
result = mask.set_index('city').fillna(filling).reset_index()

# 恢复原索引与列顺序
result = result.set_index(origin_index)[origin_cols]

运行后得到的result就是你需要的目标结果。

实现原理

  1. fillna()传入DataFrame时,会自动根据索引和列名两个维度做匹配,用传入的DataFrame的值填充原DataFrame的NaN值
  2. 我们临时把mask的city列设为索引,正好和filling的索引(城市名)对齐,value_1、value_2列名完全一致,填充逻辑会自动匹配你要的规则
  3. 填充完成后恢复原索引和列顺序即可

原有方案错误原因

你用merge的方式会默认把两个DataFrame里所有同名的列作为连接匹配条件,mask和expanded都有value_1、value_2列,merge时会匹配这两列的数值,原本为NaN的单元格无法匹配到对应行,自然无法完成填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03