![](/img/trans.png)
[英]Populate Pandas Dataframe Based on Column Values Matching Other Column Names
[英]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.