python 将交叉表重新堆叠为长、多索引、笛卡尔乘积、自联接?

2guxujil  于 2023-03-11  发布在  Python
关注(0)|答案(1)|浏览(114)

拿着表格,从excel读入一个交叉表到panda中--我想执行重新排列:

0       1   2       3       4       5
0   row_name    col_a   col_b       col_c       col_d       col_e
1   label_1     0.3 0.106628494 0.049496617 0.029875719 0.029444018
2   label_2     0.4 0.287788288 0.016961146 0.014512181 0.012937216
3   label_3     0.5 0.428264132 0.317066974 0.046346238 0.005149056
4   label_4     0.6 0.176474306 0.134044892 0.12476623  0.062386211
5   label_5     0.7 0.015996073 0.00574499  0.005136634 0.000789726

我正在尝试获取作为第0列和第0行交叉点的表的长版本

0   row_name    col_name    value
1   label_1     col_a       0.3
2   label_1     col_b       0.106628494
3   label_1     col_c       0.049496617
4   label_1     col_d       0.029875719
5   label_1     col_e       0.029444018
6   label_2     col_a       0.4
7   label_2     col_b       0.287788288
8   label_2     col_c       0.016961146
9   label_2     col_d       0.014512181
10  label_2     col_e       0.012937216
11  label_3     col_a       0.5
12  label_3     col_b       0.428264132
13  label_3     col_c       0.317066974
14  label_3     col_d       0.046346238
15  label_3     col_e       0.005149056

这就像是一个逐行的透视,或者可能是自笛卡尔连接--我不完全确定。
我试过pd.wide_to_long()pd.stack(),但都不太好,我希望有人能给我指出正确的方向
感觉就像我只想透视某些行,然后用1行和1列创建多索引,但是我还没有找到满足结果的搜索查询。

xxhby3vn

xxhby3vn1#

这是一个副本,但您要查找的是融化函数

df_melt=df.melt(id_vars="row_name")

相关问题