我有两个数据框,我想根据与第二个数据帧匹配的值在第一个数据帧中添加一列。
首先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
有没有优雅的方法来做到这一点?
答案 0 :(得分:1)
使用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