我有几个数据框,想要插入新列并不断更新该列的第一个数据框。
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}))