我有兩個這樣的資料框:
codename =
id code region
1 AAA Alpha
2 BBB Beta
3 CCC Gamma
4 DDD Delta
... ... ...
list =
id region code
1 BBB
2 DDD1
3 AAA
4 CCC10
5 AAA2
... ...
我想用第一個資料框中的代碼填充第二個資料框中的區域列。我如何比較這兩個代碼列,因為在第二個資料框中,代碼有數字但仍代表與前三個字母代碼相同的區域。
我的兩個資料集都很大,所以有什么方法可以最快地插入值。先感謝您!
uj5u.com熱心網友回復:
您想要做的稱為連接 - 即,根據鍵列上的協議從另一個表中填充一個表中的值。熊貓知道如何做到這一點(檔案)
首先,您需要清理您要加入的列:
# create a new column with the first 3 letters of values in the 'code' column
list['code_clean'] = list['code'].str.slice(0, 2) # keep first 3 letters
# drop the empty column from the list df so there's no overlap in the target column
list.drop('region', axis=1, inplace=True)
現在我們可以加入鍵列(在您的情況下它是“代碼”列)。pandas 要求該列是“其他”資料框的索引:
list = list.join(codename.set_index('code'), on='code_clean')
list
出去:
id region code code_clean
1 Beta BBB BBB
2 Delta DDD1 DDD
3 Alpha AAA AAA
4 Gamma CCC10 CCC
5 Alpha AAA2 AAA
此外,永遠不要使用 python 內置名稱作為變數名(“串列”資料框)。它可以而且將會導致意想不到的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/353684.html
