[英]Add values to one column of a pandas dataframe based on the values in another
[英]pandas dataframe append values to one column based on the values in another dataframe
我有兩個數據框,我想根據與第二個數據框匹配的值將一列添加到第一個數據框。
第一df = df1
OCC_1988 DIST YEAR COW EST_LEV
0 0 100.00 1988 NaN 4
1 10000 5.83 1988 3.0 4
2 13002 0.28 1988 3.0 4
3 13005 0.16 1988 3.0 4
4 13008 0.06 1988 3.0 4
5 13011 0.38 1988 3.0 4
6 13014 0.39 1988 3.0 4
7 13017 0.16 1988 3.0 4
8 15017 0.22 1988 3.0 4
9 15023 1.96 1988 3.0 4
10 19005 1.30 1988 3.0 4
秒df = df2
soccode oescode oes99code
0 11-1011 19002 11-1011
1 11-1011 19005 11-1011
2 11-1021 19002 11-1021
3 11-1021 19005 11-1021
4 11-1031 15023 11-1031
5 11-2011 13011 11-2011
6 11-2021 13014 11-2021
7 11-2022 13002 11-2022
8 11-2031 13005 11-2031
9 11-3011 13008 11-3011
10 11-3021 13017 11-3021
11 11-3031 15017 11-3031
12 11-3041 10000 11-3040
我想將df1 ['OCC_1988']與df2 ['oescode']匹配,並將匹配的df2 ['soccode']值添加到新添加的列'new_occ_2000'中。
因此,最終的df將如下所示:
OCC_1988 DIST YEAR COW EST_LEV new_occ_2000
0 0 100.00 1988 NaN 4 Nan
1 10000 5.83 1988 3.0 4 11-3041
2 13002 0.28 1988 3.0 4 11-2022
3 13005 0.16 1988 3.0 4 11-2031
4 13008 0.06 1988 3.0 4 11-3011
5 13011 0.38 1988 3.0 4 11-2011
6 13014 0.39 1988 3.0 4 11-2021
7 13017 0.16 1988 3.0 4 11-3021
8 15017 0.22 1988 3.0 4 11-3031
9 15023 1.96 1988 3.0 4 11-1031
10 19005 1.30 1988 3.0 4 11-1021
有什么優雅的方法可以做到這一點嗎?
使用merge
:
(df1.merge(df2[['oescode','soccode']], left_on='OCC_1988', right_on='oescode', how='left')
.drop('oescode',axis=1)
.rename(columns={'soccode':'new_occ_2000'}))
輸出:
OCC_1988 DIST YEAR COW EST_LEV new_occ_2000
0 0 100.00 1988 NaN 4 NaN
1 10000 5.83 1988 3.0 4 11-3041
2 13002 0.28 1988 3.0 4 11-2022
3 13005 0.16 1988 3.0 4 11-2031
4 13008 0.06 1988 3.0 4 11-3011
5 13011 0.38 1988 3.0 4 11-2011
6 13014 0.39 1988 3.0 4 11-2021
7 13017 0.16 1988 3.0 4 11-3021
8 15017 0.22 1988 3.0 4 11-3031
9 15023 1.96 1988 3.0 4 11-1031
10 19005 1.30 1988 3.0 4 11-1011
11 19005 1.30 1988 3.0 4 11-1021
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.