我有三个这样的DataFrame:
groups:
0 1 2 3
0 e f g h
1 e f s h
2 q f g r
3 e r g b
items:
0 1 2 3
0 ret sef sdf fhs
1 hnf cbv awd øjg
2 gry bcr vbd dgf
3 xfh sjd krt qeb
weights:
0 1 2 3
0 241 234 343 34
1 23 276 334 42
2 561 256 35 345
3 234 654 754 234
我希望这些元素彼此叠置,以使MultiIndex成为组,第一个索引为组,第二个为项目,权重为值。例如。在0,0中,我具有“ e”(第一个索引),“ ret”(第二个索引)和241(值),或者在2,3中,我具有“ g”,“ krt”和754。
我该如何完成?我想做到这一点而无需遍历数据集,而是以“熊猫方式”进行。
这与问题Combine multiple pandas DataFrames into a multi-index DataFrame不同,因为我希望它看起来像这样:
e ret 241 <-- from 0,0 in each dataframe
hnf 23 <-- from 0,1 in each dataframe
xfh 234 <-- from 0,3 in each dataframe
q gry 561 <-- from 0,2 in each dataframe
依此类推...意味着我将数据框彼此叠放并创建一个三维数据框,“通过它们查看”。
答案 0 :(得分:1)
您可以取消堆叠所有DataFrame,然后使用set_index
。我决定sort_values
以便所有对应的索引值彼此相邻。
out = pd.concat([groups.unstack(), items.unstack(), weights.unstack()], 1)
out.sort_values(by=0).set_index([0, 1])
2
0 1
b qeb 234
e ret 241
hnf 23
xfh 234
f sef 234
cbv 276
bcr 256
g sdf 343
vbd 35
krt 754
h fhs 34
øjg 42
q gry 561
r sjd 654
dgf 345
s awd 334