我有一个数字数组(我认为格式使它成为数据透视表),我想将其变成一个“整洁”的数据框。例如,我从变量1在左下方开始,变量2在顶部开始,感兴趣的值在中间,如下所示:
X Y
A 1 2
B 3 4
我想把它变成一个整洁的数据框,像这样:
V1 V2 value
A X 1
A Y 2
B X 3
B Y 4
行和列的顺序对我来说并不重要,因此以下内容完全可以接受:
value V1 V2
2 A Y
4 B Y
3 B X
1 A X
我的第一次尝试能够为我提供正确的最终答案,因此我遍历了行和列。这太慢了,我怀疑熊猫的某些机器会使它运行得更快。
[melt
似乎很接近我寻求的魔术,但并不能一路吸引我。第一个数组变成这样:
V2 value
0 X 1
1 X 2
2 Y 3
3 Y 4
摆脱了我的V1变量!
melt
没什么特别的,所以我很乐意阅读使用其他方法的答案,特别是如果melt
的速度不比我的嵌套循环快,而另一种解决方案是。但是,如何从该数组转到我想要作为输出的整洁数据帧?
将DataFrame.reset_index
与DataFrame.reset_index
一起使用[[然后是DataFrame.rename_axis
] >>。如果要订购列,我们可以使用DataFrame.rename_axis
。DataFrame.melt
另一种方法
DataFrame.melt
:
DataFrame.reindex