Pandas如何将一个DataFrame的两列映射后填充到另一个DataFrame列
Pandas按公共列匹配填充字段的实现方案
核心需求
现有两个DataFrame,第一个存储Nodes节点与对应的CapLiv数值,需要根据Nodes值的匹配关系,把第一个表中的CapLiv数值填充到第二个表的空CapLiv列中。
两种最优实现方案
方案1:左关联匹配(推荐优先使用)
适合绝大多数场景,逻辑直观、不易出错,后续需要关联其他字段时扩展性极强:
# 假设第一个表变量名为df_nodes,第二个表变量名为df_main df_main = df_main.merge( df_nodes[["Nodes", "CapLiv"]], on="Nodes", how="left", suffixes=("", "_ref") ) # 用关联得到的数值覆盖原空列,删除临时字段 df_main["CapLiv"] = df_main["CapLiv_ref"] df_main.drop("CapLiv_ref", axis=1, inplace=True)
方案2:字典映射(高性能场景使用)
适合数据量极大(百万行以上)、仅需要填充单个字段的场景,执行速度比关联更快:
# 生成Nodes到CapLiv的映射字典 cap_liv_dict = pd.Series(df_nodes.CapLiv.values, index=df_nodes.Nodes).to_dict() # 直接映射填充目标列,注意你自行实现的代码中`destino`为笔误,应替换为第二个表的节点列名`Nodes` df_main["CapLiv"] = df_main["Nodes"].map(cap_liv_dict)
方案选择建议
- 日常开发、数据量不大时选方案1,代码可读性高,便于排查关联异常
- 处理超大数据量、对性能有要求时选方案2,内存占用和执行速度更优
内容的提问来源于stack exchange,提问作者andremtsilva
相关产品推荐
相关产品推荐

