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']=?
非常感谢!
您可以 split
和 explode
您的字符串到新行中,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
我有一个像这样的数据框(“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']=?
非常感谢!
您可以 split
和 explode
您的字符串到新行中,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