2017-06-28 12 views
0

2つのデータフレームがあり、2つ目のデータフレームに一致する値に従って1つの列を最初のデータフレームに追加します。 DF2するDF1 [ 'OCC_1988']とのマッチングに私が欲しいpandas dataframe別のデータフレームの値に基づいて値を1つの列に追加します。

まず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 

[ 'oescode']、新しく追加された列 'new_occ_2000'に一致するdf2 ['soccode']値を追加します。

だから、最終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

リンクがhttps://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.mergeお役に立てば幸いです。 html – Wen

答えて

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 
関連する問題