首页 > 解决方案 > 根据其他数据框的列填充数据框列

问题描述

我有一个包含一个地区人口的数据框,我想填充一列具有相同分布的其他数据框。

第一个数据框如下所示:

Municipio   Population  Population5000
0   Lisboa  3184984 1291
1   Porto   2597191 1053
2   Braga   924351  375
3   Setúbal 880765  357
4   Aveiro  814456  330
5   Faro    569714  231
6   Leiria  560484  227
7   Coimbra 541166  219
8   Santarém    454947  184
9   Viseu   378784  154
10  Viana do Castelo    252952  103
11  Vila Real   214490  87
12  Castelo Branco  196989  80
13  Évora   174490  71
14  Guarda  167359  68
15  Beja    158702  64
16  Bragança    140385  57
17  Portalegre  120585  49
18  Total   12332794    5000

基本上,第二个数据框有 5000 行,我想创建一个名称与第一个 df 中的 Municipios 对应的列。

我的问题是我不知道如何从第一个数据帧中填充具有相同出现分布的列。

最终结果将是这样的:

Municipio
0 Porto
1 Porto
2 Lisboa
3 Évora
4 Lisboa
5 Aveiro
...
4996 Viseu
4997 Lisboa
4998 Porto
4999 Guarda
5000 Beja

有人能帮我吗?

标签: pythonpandasdataframe

解决方案


我会使用一个简单的理解来构建一个大小为 5000 的列表,其中包含与 的值一样多的城镇名称的元素,Population5000如果您想要随机顺序,可以选择对其进行洗牌:

lst = [m for m,n in df.loc[:len(df)-2,
                           ['Municipio', 'Population5000']].to_numpy()
       for i in range(n)]
random.shuffle(lst)
result = pd.Series(1, index=lst, name='Municipio')

用 初始化random.seed(0),它给出:

Setúbal     1
Santarém    1
Lisboa      1
Setúbal     1
Aveiro      1
           ..
Santarém    1
Porto       1
Lisboa      1
Faro        1
Aveiro      1
Name: Municipio, Length: 5000, dtype: int64

推荐阅读