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

如何从不同大小的DataFrame中基于ID向目标DataFrame添加列

给df1添加对应Id的amount列的几种方法

这是pandas里非常常见的数据匹配需求,我给你分享两个最实用的实现方式:

方法1:使用merge(最稳妥,适合各种场景)

merge是处理DataFrame关联的标准方法,通过指定关联键Id,并设置how='left'来保留df1的所有行:

import pandas as pd

# 只关联df2里需要的Id和amount列,避免引入无关字段
df1_with_amount = df1.merge(df2[['Id', 'amount']], on='Id', how='left')
  • 解释:how='left'确保df1的每一行都被保留,哪怕df2里没有对应的Id,这时候amount列会填充为NaN;
  • 如果df2里有重复的Id,merge会自动把所有匹配的行都关联进来,如果不需要重复,可以先给df2去重:df2.drop_duplicates(subset='Id', keep='first')。

方法2:使用map(代码更简洁,适合df2的Id无重复的情况)

如果df2里每个Id只对应一个amount值,用map会更高效简洁:

# 把df2转换成以Id为索引的Series,再用df1的Id列匹配
df1['amount'] = df1['Id'].map(df2.set_index('Id')['amount'])
  • 解释:df2.set_index('Id')['amount']生成一个以Id为键、amount为值的Series,map会自动将df1的每个Id对应到这个Series的value,没有匹配的则填充NaN。

两种方法都能满足你的需求,根据你的数据情况选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:51:33