簡體   English   中英

pandas數據框根據另一數據框中的值將值追加到一列

[英]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.

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