python 对取自另一个数据框的列中的值求和

python sum values in columns taken from another dataframe

我有一个像这样的数据框(“MUNg”):

MUN_id    Col1
1-2       a
3         b
4-5-6     c
...

还有另一个像这样的数据框(“ppc”):

     id     population
0     1     20
1     2     25
2     3     4
3     4     45
4     5     100
5     6     50
...

我需要在“MUNg”中创建一个列,其中包含通过将与“pcc”中的 ID 相对应的人口相加而获得的总人口,这些 ID 存在于 MUN_id

预期结果:

MUN_id    Col1    total_population
1-2       a       45
3         b       4
4-5-6     c       195
...

我没有写我是如何尝试实现这一点的,因为我是 python 的新手,我不知道该怎么做。

MUNg['total_population']=?

非常感谢!

您可以 splitexplode 您的字符串到新行中,map 人口数据和 GroupBy.agg 以获得总和:

MUNg['total_population'] = (MUNg['MUN_id']
 .str.split('-')
 .explode()
 .astype(int) # required if "id" in "ppc" is an integer, comment if string
 .map(ppc.set_index('id')['population'])
 .groupby(level=0).sum()
)

输出:

  MUN_id Col1  total_population
0    1-2    a                45
1      3    b                 4
2  4-5-6    c               195