首页 > 解决方案 > 使用来自另一个数据帧的字符串从 Pandas 数据帧获取索引

问题描述

我必须数据框(df),df1 包含随着时间推移感染数量的国家(2000+ 行),df2 包含人口数量(200 行)的国家。

我一直在尝试将人口数从 df2 变为 df1,以便随着时间的推移将感染转化为感染密度(?)。

在我看来,我必须遍历 df1 的行并检查每个索引到 df2 的 Country 列。如果结果为真,我可以将人口从 df2 复制到 df1。我尝试了多种方法(仅以下一种),但现在不知所措:(...有人可以推动我朝着正确的方向前进吗?

for index, row in df2.iterrows():
   df_test = df1['Country'].str.contains(row[0])

使用 df1、df2 和首选结果编辑更新:df1

   ObservationDate  Country/Region  Confirmed
0        -2.118978       Hong Kong        0.0
1        -2.118978           Japan        2.0
2        -2.118978           Macau        1.0
3        -2.118978  Mainland China      547.0
4        -2.118978     South Korea        1.0                  

df2

                 0             1
0             China  1.401580e+09
1             India  1.359321e+09
2  United States[c]  3.293798e+08
3         Indonesia  2.669119e+08
4            Brazil  2.111999e+08

df_preferred

   ObservationDate  Country/Region  Confirmed  Population
0        -2.118978       Hong Kong        0.0
1        -2.118978           Japan        2.0
2        -2.118978           Macau        1.0
3        -2.118978  Mainland China      547.0  1.401580e+09
4        -2.118978     South Korea        1.0  

标签: pythonpandasdataframe

解决方案


假设您的两个 DataFrame 如下:

  Country        Date  Infection
0   Aaaaa  2020-03-02         10
1   Aaaaa  2020-03-04         20
2   Bbbbb  2020-03-02         15
3   Bbbbb  2020-03-04         20
4   Ccccc  2020-03-02         12
5   Ccccc  2020-03-04         40

  Country  Population
0   Aaaaa    10000000
1   Bbbbb    35200000
2   Ccccc    48700000

然后,要合并它们并将结果保存在另一个 DataFrame 中,您可以运行:

df3 = df1.merge(df2, on='Country')

得到:

  Country        Date  Infection  Population
0   Aaaaa  2020-03-02         10    10000000
1   Aaaaa  2020-03-04         20    10000000
2   Bbbbb  2020-03-02         15    35200000
3   Bbbbb  2020-03-04         20    35200000
4   Ccccc  2020-03-02         12    48700000
5   Ccccc  2020-03-04         40    48700000

要计算感染率,您可以执行:

df3['InfectionRate'] = df3.Infection / df3.Population

推荐阅读