我有两个类型为
的pandas DataFrameDataFrame 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"基于列名称。我尝试了合并和连接并加入但没有得到我想要的结果。
答案 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'。