python - 如何根据匹配列从另一个df创建列?
问题描述
我有一个名为 df 的人口,其中有一列名为国家。我想合并行,以便它们反映区域 =(非洲、西下摆、亚洲、欧洲、中东)。我有另一个来自 kaggle 的名为 regionref 的 df,其中包含世界上所有国家以及与它们相关的区域。
如何使用 kaggle 数据集中的区域列在人口 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,因为没有共同的值。
解决方案
你只需要一个连接功能,或者说,以熊猫的方式连接。
给定两个 DataFrame 弹出,区域:
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 - Beautifulsoup 在网站上不起作用
- json - 无法将数组传递给 json 字符串
- arrays - 获取单个核心数据元素并组合成单个数组
- firefox - 在 Firefox 的固定选项卡上运行 javascript
- c++ - 我可以从变量中获取对类对象的引用吗
- arrays - 将 Outlook 邮件转换为 Byte[]
- .net-core - DotNet Core 中的条件逻辑 OR 运算符
- powershell - 如何从 MyModule.psm1 中检索 MyModule.psd1 哈希值的值,例如 RootModule、ModuleVersion 和 HelpInfoURI?
- python - 为什么这种获取http客户端的方式会失败?
- java - 带有 jacoco 插件的 SonarQube 覆盖率显示百分比为零,但可以看到单元测试的数量