基于索引列合并两个数据框。

5
我有两个数据框,我想要将它们基于匹配行合并成一个单一的数据框。我的数据框如下所示:

DF_1

Set_1   Fax_1   Fax_2
Abc_1   45     76
Abc_2   46     77
Abc_3   47     78
Abc_4   48     79
Abc_5   49     80
Abc_6   50     81
Abc_7   51     82
Abc_8   52     83
Abc_9   53     84
Abc_10  54     85

df_2

Set_1   Fax_3   Fax_4
Abc_1   69     42
Abc_2   70     43
Abc_3   71     44
Abc_6   72     45
Abc_5   73     46
Abc_6   74     47
Abc_7   75     48
Abc_8   76     49
Abc_9   77     50
Abc_10  78     51
Abc_11  55     86
Abc_12  56     87
Abc_13  57     88
Abc_14  58     89
Abc_15  59     90
Abc_16  60     91
第二个数据框是一个较大的数据框,我需要将它作为输出文件中的内容,如下:
Set_1   Fax_1   Fax_2   Fax_3   Fax_4
Abc_1   45     76      69     42
Abc_2   46     77      70     43
Abc_3   47     78      71     44
Abc_4   48     79      72     45
Abc_5   49     80      73     46
Abc_6   50     81      74     47
Abc_7   51     82      75     48
Abc_8   52     83      76     49
Abc_9   53     84      77     50
Abc_10  54     85      78     51
这是我尝试过的合并方法:
merged =df.merge(df_annon, on='Set_1')
merged.head()

但它只是将标题作为输出给我。非常感谢您的帮助和指导..!!

pd.merge 接受两个关键字参数 left_index=Trueright_index=True,这将在索引上进行合并,也许这正是您想要的? - firelynx
1
你也可以使用 join,它基本上与 merge 相同,但自动使用索引。 - JohnE
此外,您的示例数据帧没有将Set_1设置为索引,如果您运行示例的merge语句,会触发异常,因此有些奇怪... - LondonRob
1
@LondonRob 现在至少有一半的pandas问题是重复的。;-) - JohnE
这是我快速制作的虚拟数据框,用于发布问题。对此我感到抱歉。 - Alva James
显示剩余3条评论
2个回答

12

试一试

merged = df.merge(df_annon, left_index=True, right_index=True, how='inner')

8

我想我已经在评论中写了答案,但是让我详细解释一下。

pandas合并函数接受关键字参数:left_index=right_index=。当设置为True时,合并函数将使用数据框的索引进行合并。

像这样:

merged = pd.merge(left=df, left_index=True
                  right=df_annon, right_index=True,
                  how='inner')

抱歉,但使用此解决方案会打印所有列而不是基于匹配的列。 - Alva James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接