首页 > 解决方案 > 如何在 Python 中跨数据框进行匹配?

问题描述

我有 2 个数据框,一个是包含许多列的自由贸易协定数据集,列 c1 到 c91 表示特定自由贸易协定的不同国家部分,如下所示: FTA 数据

FTA 数据,例如

No   Base_treaty   entry_type               c1          c2            c3
1     1            treaty             Afghanistan     India           NA
2     2            treaty                Algeria      Egypt          Ghana
3     3            treaty                Algeria      Angola         Benin
4     4            treaty                Egypt        Jordan         Morocco
5     5            treaty                Albania      Bulgaria         NA
6     6            treaty                Albania      Croatia          NA

另一个数据框包含两个特定国家 i 和 j 之间的贸易数据。贸易数据

   inventor_ctry_i   authority_ctry_j           
1    Albania            Bulgaria         
2    Albania            Croatia          
3    Algeria             Angola        
4    Algeria            Belgium         
5    Algeria            France          
6    Andorra            Turkey          
7    Andorra          United States   
8    Anguilla           Germany         
9    Anguilla         Switzerland     
10    Anguilla        United States

期望的输出:

No   Base_treaty   entry_type         matched ctry1   matched ctry2       
 3     3            treaty                Algeria      Angola         
 5     5            treaty                Albania      Bulgaria         
 6     6            treaty                Albania      Croatia    



  

我希望能够在 FTA 数据的 c1 到 c91 之间的同一行中找到贸易数据中的国家 i 和 j。如果两者都出现在特定行中,请从 FTA 中的行中提取 2 个国家,保持 no、基本条约和条目类型列不变。

任何帮助将不胜感激!

标签: pythondataframe

解决方案


连接与您在上面看到的合并技术有点不同。通过合并,您可以期望生成的数据集将来自父数据集的行混合在一起,通常基于一些共性。根据合并的类型,您还可能会丢失在其他数据集中没有匹配的行。

通过串联,您的数据集只是沿着一个轴(行轴或列轴)拼接在一起。从视觉上看,沿行没有参数的串联将如下所示:

concatenated = pandas.concat([df1, df2], axis=1)

有关代码的更多理解和清除,请参阅此链接


推荐阅读