<p>根据<a href="https://stackoverflow.com/questions/38967402/how-to-multiply-every-column-of-one-pandas-dataframe-with-every-column-of-anothe">this answer</a>改编,这里是一个使用多索引的向量化方法</p>
<pre><code>pidx = np.indices((Envelope.shape[1], Shading.shape[1], ThermalMass.shape[1])).reshape(3, -1)
lcol = pd.MultiIndex.from_product([Envelope, Shading, ThermalMass])
pd.DataFrame(Envelope.values[:, pidx[0]] * Shading.values[:, pidx[1]] * ThermalMass.values[:, pidx[2]],
columns=lcol, index=Envelope.index)
</code></pre>
<p>给出:</p>
<pre><code> Group(A) Group(B) \
YeSH NoSH YeSH NoSH
Heavy Light Heavy Light Heavy Light Heavy Light
Country
France 0.080 0.120 0.080 0.120 0.080 0.120 0.080 0.120
Brussels 0.240 0.240 0.160 0.160 0.030 0.030 0.020 0.020
Germany_A 0.081 0.189 0.009 0.021 0.162 0.378 0.018 0.042
Germany_B 0.040 0.040 0.060 0.060 0.100 0.100 0.150 0.150
Group(C)
YeSH NoSH
Heavy Light Heavy Light
Country
France 0.040 0.060 0.040 0.060
Brussels 0.030 0.030 0.020 0.020
Germany_A 0.027 0.063 0.003 0.007
Germany_B 0.060 0.060 0.090 0.090
</code></pre>