我有一个名为“population”的 df,其中有一列名为“countries”的列。我想合并行,以便它们反射(reflect)区域=(非洲、西边、亚洲、欧洲、中东)。我有另一个来自 Kaggle 的名为 Regionref 的 df,其中包含世界上所有国家以及与其相关的区域。
如何使用kaggle数据集中的区域列在population df中创建一个新列,该列具有国家/地区列中国家/地区的相应区域。
所以本质上这就是人口数据框
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,因为没有共同的值。
最佳答案
您只需要一个连接功能,或者说,以 pandas 的方式连接。
给定两个 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
axis = 1 用于水平连接。您必须设置列索引才能正确连接它。
关于python - 如何根据匹配的列从另一个df创建列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60005935/