我有两个想要合并的数据框。主要数据框是人口
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
答案 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)