仅合并Python中的某些列

时间:2017-03-08 18:22:10

标签: python pandas merge

我有两个想要合并的数据框。主要数据框是人口

Pop:
        Country Name    Country Code    Year    Population  CountryYear
    0   Aruba           ABW             1960    54208.0     ABW-1960
    1   Andorra         AND             1960    13414.0     AND-1960

我有与国家GDP相似的表格

GDP:

    Country Name    Country Code    Year    GDP              CountryYear
0   Aruba           ABW             1960    0.000000e+00     ABW-1960
1   Andorra         AND             1960    0.000000e+00     AND-1960

我想要的是一个新的框架,结合,有字段:

Country Name
Country Code
Year    
Population  
CountryYear

来自人口统计表和基于CountryYear的表中的相应GDP,并且这是添加到其中的唯一列。

我试过了,但我得到了重复的表格:

df_merged = pd.merge(poptransposed, gdptransposed, left_on=['CountryYear'],
              right_on=['CountryYear'],
              how='inner')
df_merged.head()


  Country Name_x    Country Code_x  Year_x  Population  CountryYear Country Name_y  Country Code_y  Year_y  GDP
Aruba   ABW 1960    54208.0 ABW-1960    Aruba   ABW 1960    0.000000e+00
Andorra AND 1960    13414.0 AND-1960    Andorra AND 1960    0.000000e+00

1 个答案:

答案 0 :(得分:1)

解决方案是使用国家/地区代码作为索引,然后使用pandas concat函数(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html):

Pop = Pop.set_index('Country Code', drop = True)
GDP = GDP.set_index('Country Code', drop = True)

df_merged= pd.concat([Pop, GDP['GDP'].to_frame('GDP')], axis = 1, join = 'inner').reset_index(drop = False)