Numpy广播和for loop
我有两个pd数据帧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
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