我有一个df命名为“人口”,其中有一列名为“国家”。我想合并行,以便它们反映区域=(非洲,西下摆,亚洲,欧洲,中东)。我还有一个来自kaggle的名为regionref的df,它具有世界上所有国家以及与它们关联的区域。
如何使用kaggle数据集中的region列在人口df中创建一个新列,该列在country列中具有相应的国家/地区。
所以本质上这是人口数据帧
CountryName 1960 1950 ...
US
Zambia
India
这是regionref数据集
Country Region GDP...
US West Hem
Zambia Africa
India Asia
我希望人口df看起来像
CountryName Region 1960 1950 ...
US West Hem
Zambia Africa
India Asia
编辑:我尝试了串联,但是由于某些原因,两列无法识别相同的值
population['Country Name'].isin(regionref['Country']).value_counts()
这对于所有值都返回False,因为没有共同的值。
答案 0 :(得分:0)
您只需要联接功能,或者说以熊猫的方式进行连接。
给出两个DataFrames弹出框,区域:
pop = pd.DataFrame([['US', 1000, 2000], ['CN', 2000, 3000]], columns=['CountryName', 1950, 1960])
CountryName 1950 1960
0 US 1000 2000
1 CN 2000 3000
region = pd.DataFrame([['US', 'AMER', '5'], ['CN', 'ASIA', '4']], columns = ['Country', 'Region', 'GDP'])
Country Region GDP
0 US AMER 5
1 CN ASIA 4
您可以这样做:
pd.concat([region.set_index('Country'), pop.set_index('CountryName')], axis = 1)\
.drop('GDP', axis =1)
Region 1950 1960
US AMER 1000 2000
CN ASIA 2000 3000
轴= 1用于水平连接。您必须设置列索引才能正确连接它。