簡體   English   中英

根據其他 dataframe 的列填充一個 dataframe 列

[英]Populate a dataframe column based on a column of other dataframe

我有一個 dataframe 和一個地區的人口,我想用相同的分布填充其他 dataframe 的列。

第一個 dataframe 看起來像這樣:

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

基本上,第二個 dataframe 有 5000 行,我想創建一個名稱與第一個 df 中的 Municipios 相對應的列。

我的問題是我不知道如何使用第一個 dataframe 的相同出現分布填充該列。

最終結果將是這樣的:

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

有人能幫我嗎?

我會使用一個簡單的理解來構建一個大小為 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

如果你這樣做,你可以只做一個簡單的 map ;

map = dict(zip(DF1['Population5000'], DF1['Municipio']))
DF2['Municipo'] = DF2['Population5000'].map(map)

或者只需將 map (DF2) 中的 population 5000 列名稱更改為包含您的人口值的列名稱。

map = dict(zip(municipios['Population5000'], municipios['Municipio']))
df['Municipio'] = municipios['Population5000'].map(map)

我按照 Amen_90 和第二個 dataframe 的 Municipio 列的建議進行了嘗試,當我想擁有與第一個 dataframe 中的“Population5000”列相同的 value_counts 時,它只填充了每個 Municipio 的 1 個實例。

df["Municipio"].value_counts()

Beja                1
Aveiro              1
Bragança            1
Vila Real           1
Porto               1
Santarém            1
Coimbra             1
Guarda              1
Leiria              1
Castelo Branco      1
Viseu               1
Total               1
Faro                1
Portalegre          1
Braga               1
Évora               1
Setúbal             1
Viana do Castelo    1
Lisboa              1
Name: Municipio, dtype: int64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM