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

如何将另一DataFrame的指定列添加到仅含部分行的DataFrame中

解决方案

要将df1中的outcome列匹配到df2并保留df2原有行,可通过以下两种常用方法实现:

方法1:使用merge(基于索引匹配)

merge可指定按行索引合并,同时仅选取df1的outcome列进行匹配,how='left'确保仅保留df2的行记录:

import pandas as pd

# 构造示例数据(替换为你的真实数据即可)
data1 = {
    'outcome': ['Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'No'],
    'Feature1': [10, 28.3, 1, 100, 34, 42, 0],
    'Feature2': [11, 9, 0, 23, 67, 98, 11]
}
df1 = pd.DataFrame(data1, index=['Person1', 'Person10', 'Person11', 'Person12', 'Pt33', 'Pt40x', 'pt80xx'])

data2 = {
    'Feature1': [10, 28.3, 34, 0],
    'Feature2': [11, 9, 67, 11]
}
df2 = pd.DataFrame(data2, index=['Person1', 'Person10', 'Pt33', 'pt80xx'])

# 执行合并
result = df2.merge(df1[['outcome']], left_index=True, right_index=True, how='left')
# 调整列顺序以匹配期望结果(可选操作)
result = result[['outcome', 'Feature1', 'Feature2']]
print(result)

输出结果:

outcome  Feature1  Feature2
Person1       Yes      10.0        11
Person10      Yes      28.3         9
Pt33          Yes      34.0        67
pt80xx         No       0.0        11

方法2:使用join(更简洁的索引合并)

join默认按行索引合并,直接将df1的outcome列关联到df2,同样保留df2的行:

# 执行关联
result = df2.join(df1['outcome'])
# 调整列顺序(可选操作)
result = result[['outcome', 'Feature1', 'Feature2']]
print(result)

输出结果与方法1完全一致。

关键说明

  • 两种方法均依赖行索引匹配,需确保df1和df2的行索引(如Person1、Pt33)完全对应,否则会出现匹配失败。
  • how='left'(merge中显式指定,join默认采用left连接)保证只保留df2中存在的行,不会引入df1的额外记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:45:42