如何基于行值合并两个不等大小的DataFrame

时间:2015-06-18 21:36:31

标签: python pandas dataframe

我有两个类型为

的pandas DataFrame
DataFrame 1

Index   Name    Property1 Property2
0     ("a","b")  1          2
1     ("c","d")  3          4
2     ("e","f")  5          6

第二个,有共同的价值,但不是在同一个指数(我不关心)。

DataFrame 2

Index   Name    Property3 Property4
0     ("g","h")  7          8
1     ("i","j")  9          10
2     ("k","l")  11         12
3     ("a","b")  13         14
4     ("c","d")  15         16
5     ("e","f")  17         18

有没有办法让这些组合在一起,使得结果DataFrame是表之间共享Name的公共行?

即pandas操作的结果应为

Result Frame

Index    Name    Property1 Property2 Property3 Property4
0      ("a","b")  1         2           13       14   
1      ("c","d")  3         4           15       16
2      ("e","f")  5         6           17       18

很抱歉,我没有给你实际的pandas代码来创建上面的DataFrames。但我想在概念上理解如何使用不同的"索引加入两个不等大小的DataFrame"基于列名称。我尝试了合并和连接并加入但没有得到我想要的结果。

1 个答案:

答案 0 :(得分:3)

默认merge在这里工作正常,假设您的索引实际上是您的索引:

In [22]:

df1.merge(df2)
Out[22]:
        Name  Property1  Property2  Property3  Property4
0  ("a","b")          1          2         13         14
1  ("c","d")          3          4         15         16
2  ("e","f")          5          6         17         18

此处merge会查找常用列,并在这些列上执行inner合并。

您可以明确指定要在“名称”列上合并:

df1.merge(df2, on='Name')

但在这种情况下没有必要,因为无论如何唯一的共同列是'Name'。

相关问题