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

如何基于另一个DataFrame的行值为目标DataFrame新增列赋值?

在Pandas中根据匹配值新增列

需求:给df1新增z1列,根据df1的x1值匹配df2的x2,取对应的y2值填充。

方法一:字典映射(map())

这是最直接高效的方式,先从df2构建映射关系,再给df1赋值:

# 从df2创建x2到y2的映射字典
x2_to_y2 = df2.set_index('x2')['y2']
# 给df1新增z1列
df1['z1'] = df1['x1'].map(x2_to_y2)

方法二:DataFrame合并(merge())

通过合并操作将两个表关联,提取需要的列:

# 左连接合并,保留df1所有行
df1 = df1.merge(df2, left_on='x1', right_on='x2', how='left')
# 重命名y2为z1,删除多余的x2列
df1 = df1.rename(columns={'y2': 'z1'}).drop(columns='x2')

执行结果

两种方法都能得到预期的df1:

x1        y1   z1
0    0.0  0.000000  0.00
1    0.0  0.071429  0.00
2    0.0  0.142857  0.00
3    3.0  0.214286  0.25
4    3.0  0.285714  0.25
5    3.0  0.357143  0.25
6    6.0  0.428571  0.50
7    6.0  0.500000  0.50
8    6.0  0.571429  0.50
9    9.0  0.642857  0.75
10   9.0  0.714286  0.75
11   9.0  0.785714  0.75
12  12.0  0.857143  1.00
13  12.0  0.928571  1.00
14  12.0  1.000000  1.00

适用场景

  • 如果只是单一列的映射,优先用map(),速度更快,代码更简洁。
  • 如果需要同时匹配多列数据,或者映射关系复杂,用merge()更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:31:00