Numpy广播和for loop

Numpy广播和for loop,numpy,for-loop,Numpy,For Loop,我有两个pd数据帧 df1 Equipment_Class 0 1 2 3 PC1 8.72 7.32 0.17 0.00 PC2 19.18 10.11 8.72 0.35 df2 Year Equipment_Class 0

我有两个pd数据帧

       df1

           Equipment_Class    0     1       2         3
               PC1         8.72     7.32    0.17    0.00
               PC2        19.18     10.11   8.72    0.35


       df2
            Year    Equipment_Class     0         1          2        3
            2024    PC1                0.7       0.3      0.1         0.0
            2025    PC1                0.6       0.3      0.1         0.0
            2026    PC1                0.6       0.3      0.1         0.0
            2027    PC2                0.4       0.5      0.1         0.0         
            2028    PC2                0.2       0.5      0.1         0.2
            2029    PC2                0.3       0.5      0.1         0.1
如果两个dfs中的设备类别匹配,即设备类别==“PC1”或“PC2”,我想将df1.loc[0,“0”:“3”]和df2.loc[0:,“0”:“3”]相乘

我还想做一个for循环,所以我不必手动添加列

以下是我目前的代码:

  df3=pd.DataFrame(columns=['PC1','PC2'])
  col_names=df1.Equipment_Class

  for incol,df3column in zip(col_names, df3.columns):
      df3[df3column]=df1.loc[df1.Equipment_Class==incol, "0":"3"].to_numpy() 
                   [None,:]*df2.loc[df2.Equipment_Class==incol, "0":"3"]
我收到以下错误消息: ValueError:无法强制转换为Series/DataFrame,dim必须为 产生

                     0      1      2      3
Equipment_Class                            
PC1              6.104  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC2              7.672  5.055  0.872  0.000
PC2              3.836  5.055  0.872  0.070
PC2              5.754  5.055  0.872  0.035
                     0      1      2      3
Equipment_Class                            
PC1              6.104  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC1              5.232  2.196  0.017  0.000
PC2              7.672  5.055  0.872  0.000
PC2              3.836  5.055  0.872  0.070
PC2              5.754  5.055  0.872  0.035