python pandas在与另一个数据帧合并时不断更新某些列

时间:2017-06-29 20:18:32

标签: python pandas dataframe insert

我有几个数据框,想要插入新列并不断更新该列的第一个数据框。

df1

    OCC_99  NAICS_2002  NAICS_2010  NAICS_2016  
0   19002   Nan         Nan         Nan
1   19005   Nan         Nan         Nan
2   19003   Nan         Nan         Nan
3   19004   Nan         Nan         Nan
4   19006   Nan         Nan         Nan
5   Nan     Nan         11-1011     Nan
6   Nan     Nan         11-1023     Nan
7   Nan     Nan         11-2021     Nan
8   Nan     Nan         Nan         Nan
9   Nan     Nan         Nan         Nan
10  Nan     Nan         Nan         Nan


df2

    soccode oescode oes99code
0   11-1011 19002   11-1011
1   11-1012 19005   11-1012
2   11-1013 19004   11-1021
3   11-1014 19003   11-1023
4   11-1015 19006   11-1025

然后与df1['OCC_99']匹配到df2['oescode'],并将值从df2['soccode']插入df1['NAICS_2012]。 我想在第一步中生成df1,如下所示。

    OCC_99  NAICS_2002  NAICS_2010  NAICS_2016  NAICS_2012
0   19002   Nan         Nan         Nan         11-1011
1   19005   Nan         Nan         Nan         11-1012
2   19003   Nan         Nan         Nan         11-1014
3   19004   Nan         Nan         Nan         11-1013
4   19006   Nan         Nan         Nan         11-1015
5   Nan     Nan         11-1011     Nan         Nan
6   Nan     Nan         11-1023     Nan         Nan
7   Nan     Nan         11-2021     Nan         Nan
8   Nan     11-1012     Nan         Nan         Nan
9   Nan     11-1013     Nan         Nan         Nan
10  Nan     11-1014     Nan         Nan         Nan

然后我将使用df3

    code02  code12  
0   11-1011 11-2022
1   11-1012 11-3035
2   11-1013 11-4031
3   11-1014 11-2024
4   11-1015 11-2033

然后,使用df1['NAICS_2002']df3['code02']进行数学运算,并将df3['code12']插入df1['NAICS_2012']。 我想在第二步中生成df1,如下所示。

    OCC_99  NAICS_2002  NAICS_2010  NAICS_2016  NAICS_2012
0   19002   Nan         Nan         Nan         11-1011
1   19005   Nan         Nan         Nan         11-1012
2   19003   Nan         Nan         Nan         11-1014
3   19004   Nan         Nan         Nan         11-1013
4   19006   Nan         Nan         Nan         11-1015
5   Nan     Nan         11-1011     Nan         Nan
6   Nan     Nan         11-1023     Nan         Nan
7   Nan     Nan         11-2021     Nan         Nan
8   Nan     11-1012     Nan         Nan         11-3035
9   Nan     11-1013     Nan         Nan         11-4031
10  Nan     11-1014     Nan         Nan         11-2024

我使用了下面的函数,但是当我每次都使用相同的newcolname时,它会在dataframe中生成具有相同列名的单独列,因此无法继续更新同一列。

df_new = (df1.merge(df2[[df2col1,df2col2]], left_on=df1col,
            right_on = df2col1, how='left').drop(df2col1, axis=1)\
          .rename(columns={df2col2:newcolname}))

0 个答案:

没有答案