匹配具有相似列的两个数据框

时间:2020-05-21 08:52:50

标签: python pandas dataframe

我有两个数据框:

df1:

  Country_Name      Population_1991     Population_1992  
0 Colombia          33758337            34422569
1 Ecuador           3244345             324345455
2 France            362763732           372874749   
3 UK                327874738           375960889

df2:

    Period  Trade_Flow  Reporter    Partner Trade_Value
0   1991    Import      Colombia    France  230723392
1   1991    Import      Colombia    UK      1237364
2   1992    Import      Colombia    France  230723392
3   1992    Import      Colombia    UK      1237364
4   1991    Import      Ecuador     France  230723392
5   1991    Import      Ecuador     UK      1237364
6   1992    Import      Ecuador     France  230723392
7   1992    Import      Ecuador     UK      1237364

我想要使用年份和Country_name在df2上加入df1。因此,从df2中的每一行来看一下Reporter国家/地区,并将其与df1中的Country_Name相匹配。取人口值并将其添加到Reporter_pop列中。对Partner_pop等执行相同的操作。 最终结果应如下所示:

    Period  Trade_Flow  Reporter    Partner Trade_Value Reporter_pop Partner_pop
0   1991    Import      Colombia    France  230723392   33758337     362763732                   
1   1991    Import      Colombia    UK      1237364     33758337     327874738                 
2   1992    Import      Colombia    France  230723392   34422569     372874749  
3   1992    Import      Colombia    UK      1237364     34422569     375960889
4   1991    Import      Ecuador     France  230723392   3244345      362763732                 
5   1991    Import      Ecuador     UK      1237364     3244345      327874738              
6   1992    Import      Ecuador     France  230723392   324345455    372874749  
7   1992    Import      Ecuador     UK      1237364     324345455    375960889

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试此操作将使df1数据格式与df2相同:

import pandas as pd
df=pd.DataFrame({'Country_name':['columbia',
                                 'ecuador', 'France'],
                'pop_1991':[123325,453233,645632],
                'pop_1992':[153232,478653,654324]})


df2=df.iloc[0:,[0,1]]
df2['Year']=1991
df2=df2.rename(columns={'pop_1991':'population'})
df3=df.iloc[0:,[0,2]]
df3['Year']=1992
df3=df3.rename(columns={'pop_1992':'population'})
df4=df2.append(df3,ignore_index=True)

发布此文件即可将您的数据合并年份和国家/地区 希望对您有帮助