簡體   English   中英

如果列名稱存在於其他數據框(Python 3.6)中,則更改數據框列

[英]Change dataframe columns if column name exist in other dataframe, Python 3.6

我有一個主數據框(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 ['QC'] = DF [Q23]的MDF映射來替換DF列

兩個數據幀中的順序相同。 我總共有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

這確實是一項挑戰。

您可以通過選擇包含'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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM