我有一个主数据框(DF),下面有列&数据
C D E F G H I J K L QC
254 95 0 34543 43 32 4 4 4 4 Q23
255 59 1 43 tre r5 54 567 564 Q23
256 50 7 65 76557 65 65 5 5 Q23
并且,使用以下列映射数据帧(MDF)
QC Res1 Res2 Res3 Res4 Res5 Res6 Res7 Res8 Res9 Res10
Q23 US CH JP CE OV NON DK TOT N KK
Q24 US ZZ JP ME KP NON DK TOT E LK
此处,两个数据帧中的列QC都用于映射。
我想通过MDF映射替换DF列,其中MDF ['QC'] = DF [Q23]
数据框中的顺序相同。我有500个数据帧,我想用另一个数据帧中的新列更新所有数据帧列。
最终预期数据框:DF
US CH JP CE OV NON DK TOT N KK QC
254 95 0 34543 43 32 4 4 4 4 Q23
255 59 1 43 tre r5 54 567 564 Q23
256 50 7 65 76557 65 65 5 5 Q23
这真的很有挑战性。
答案 0 :(得分:1)
您可以通过选择包含'QC的值,即
的行来使用np.append如果您有像
这样的数据框print(df1) C D E F G H I J K L QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q23 1 255 59 1 43 tre NaN r5 54 567 564 Q23 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q23
print(df2) C D E F G H I J K L QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q24 1 255 59 1 43 tre NaN r5 54 567 564 Q24 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q24
然后一个for循环来分配列可以帮助你,即
for i in [df1,df2]:
q = i['QC'].unique()[0]
i.columns = np.append(mdf[mdf['QC'] == q].values[0][1:],['QC'])
print([df1,df2]
[ US CH JP CE OV NON DK TOT N KK QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q23 1 255 59 1 43 tre NaN r5 54 567 564 Q23 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q23, US ZZ JP ME KP NON DK TOT E LK QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q24 1 255 59 1 43 tre NaN r5 54 567 564 Q24 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q24]