【发布时间】:2020-12-16 12:23:04
【问题描述】:
我有三个具有相同索引(国家/地区)的数据框。 我需要找到三个数据框的所有组合,用数据框创建新列。在每一列下,我将得到这些组合的值的乘积。
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)
#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`
我尝试使用 MultiIndex.from_product
all = pd.MultiIndex.from_product([Envelope,Shading,ThermalMass])
但结果仅适用于标题:
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')],
)
我需要每个国家/地区的值,所以它应该看起来像这样 (3 x 2x 2) = 12 个组合:
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
如何创建新列和三个数据框的组合?
【问题讨论】:
-
看起来这个解决方案可以为你工作:Similar problem
标签: python dataframe combinations