繁体   English   中英

如何基于行值合并两个大小不等的数据框

[英]How to merge two DataFrames of unequal size based on row value

我有两个类型的熊猫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是在表之间共享名称的公共行?

即熊猫操作的结果应该是

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

抱歉,我没有为您提供实际的熊猫代码来创建上述DataFrames。 但是我想从概念上理解如何基于列名将两个不等大小的DataFrame与不同的“索引”结合在一起。 我尝试过合并和合并并加入,但没有得到想要的结果。

假设您的索引实际上是您的索引,则默认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')

但是在这种情况下,这是没有必要的,因为无论如何,唯一的公共列是“名称”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM