python - 如何根据匹配的列从另一个df创建列?

标签 python pandas dataframe jupyter-notebook data-science

我有一个名为“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,因为没有共同的值。

这是输出,您可以看到有一些共同的值 enter image description here

最佳答案

您只需要一个连接功能,或者说,以 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/

相关文章:

python - Pandas 通过局部变量查询并获取空值

python - 如何计算批处理数据帧的平均值?

python - 在 Pandas 的 GroupBy 中检查负滚动窗口中的条件

pandas - 除以 pandas 数据框中一组内的最大值

python - 如何处理 Pandas 中的SettingWithCopyWarning

python - 无法获得文本换行或垂直居中以与 xlsxwriter 一起使用

python - 在 Python 中一致地格式化数字

python - 如何从 Tkinter 根窗口解除每个绑定(bind)

python - 无法从 multiprocessing.Queue .get()

python - 是否可以预先创建一个用于 hudson 构建的 virtualenv?