回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有三个具有相同索引的数据框(国家)。
我需要找到这三个数据帧的所有组合,用这些数据帧创建新的列。在这些列中的每一列下,我将有这些组合值的乘法</p>
<pre><code>Envelope = pd.read_excel("Envelope.xlsx",index_col=0)
Shading = pd.read_excel("Shading.xlsx",index_col=0)
ThermalMass = pd.read_excel("ThermalMass.xlsx",index_col=0)
</code></pre>
<pre><code>#Envelope dataframe
Country Group(A) Group(B) Group(C)
France 0.4 0.4 0.2
Brussels 0.8 0.1 0.1
Germany_A 0.3 0.6 0.1
Germany_B 0.2 0.5 0.3
#Shading dataframe
Country YeSH NoSH
France 0.5 0.5
Brussels 0.6 0.4
Germany_A 0.9 0.1
Germany_B 0.4 0.6
#ThermalMass dataframe
Country Heavy Light
France 0.4 0.6
Brussels 0.5 0.5
Germany_A 0.3 0.7
Germany_B 0.5 0.5`
</code></pre>
<p>我尝试使用MultiIndex.from_产品</p>
<pre><code>all = pd.MultiIndex.from_product([Envelope,Shading,ThermalMass])
</code></pre>
<p>但结果仅限于标题:</p>
<pre><code>print(all)
MultiIndex([('Group(A)', 'YeSH', 'Heavy'),
('Group(A)', 'YeSH', 'Light'),
('Group(A)', 'NoSH', 'Heavy'),
('Group(A)', 'NoSH', 'Light'),
('Group(B)', 'YeSH', 'Heavy'),
('Group(B)', 'YeSH', 'Light'),
('Group(B)', 'NoSH', 'Heavy'),
('Group(B)', 'NoSH', 'Light'),
('Group(C)', 'YeSH', 'Heavy'),
('Group(C)', 'YeSH', 'Light'),
('Group(C)', 'NoSH', 'Heavy'),
('Group(C)', 'NoSH', 'Light')],
)
</code></pre>
<p>我需要每个国家的值,所以它应该是这样的(3 x 2x 2)=12个组合:</p>
<pre><code> Group(A)_YeSH_Heavy Group(A)_YeSH_Light Group(A)_NoSH_Heavy Group(A)_NoSH_Light
Country
France 0.08 0.12 0.08 0.12
Brussels 0.24 0.24 0.16 0.16
Germany_A 0.081 0.189 0.009 0.6
Germany_B 0.04 0.04 0.06 0.06
</code></pre>
<p>如何创建新列以及三个数据帧的组合</p>