##修改列的名字defNull_Next_Fill(df1,df2,merge_list):#当需要匹配的参数为两个时,将需要匹配的参数提前,防止在之后的操作中重命名for i,j inenumerate(merge_list):
df1_new = df1[j]
df1 = df1.drop(j,axis=1)
df1.insert(i,j,df1_new)
df2_new = df2[j]
df2 = df2.drop(j,axis=1)
df2.insert(i,j,df2_new)#寻找df1与df2中的共有的列名
same_col=[i for i in df1.columns if i in df2.columns]#给df2中相同变量赋予新名称
same_col_new=same_col.copy()for i inrange(len(merge_list),len(same_col)):
same_col_new[i]=same_col_new[i]+'_new'#修改列名for i,j inzip(same_col,same_col_new):
df2 = df2.rename(columns={i:j})#将df1和df2以关键字匹配
rel_df = pd.merge(df1,df2,on=merge_list,how='outer')#讲df中空缺的值用df2中的值填补for i,j inzip(same_col[len(merge_list):],same_col_new[len(merge_list):]):
rel_df.loc[rel_df[i].isnull(),i]=rel_df[j]#删除过程中出现的变量(优化)
drop_col=[i for i in same_col_new if i notin merge_list]
rel_df=rel_df.drop(drop_col,axis=1)return rel_df