如何将另一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
相关产品推荐
相关产品推荐

