如果列名存在于其他数据框Python 3.6中,则更改数据框列

时间:2017-09-19 15:28:28

标签: python python-3.x pandas dataframe

我有一个主数据框(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

这真的很有挑战性。

1 个答案:

答案 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]