【发布时间】:2020-05-21 18:06:28
【问题描述】:
我有一个数字数组(我认为格式使其成为数据透视表),我想将其转换为“整洁”的数据框。例如,我从左侧下方的变量 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
对于我的第一次尝试,它能够让我得到正确的最终答案,我遍历了行和列。这非常慢,我怀疑 Pandas 中的某些机器会让它运行得更快。
似乎melt 接近于我所寻求的魔法,但它并没有让我一路走到那里。第一个数组变成这样:
V2 value
0 X 1
1 X 2
2 Y 3
3 Y 4
它摆脱了我的 V1 变量!
melt 没有什么特别之处,所以我很乐意阅读使用其他方法的答案,特别是如果melt 并不比我的嵌套循环快多少,而另一个解决方案是。尽管如此,我怎样才能从该数组转到我想要作为输出的那种整洁的数据框?
示例数据框:
df = pd.DataFrame({"X":[1,3], "Y":[2,4]},index=["A","B"])
【问题讨论】:
-
是的,melt 不能很好地配合数据帧索引,我几乎总是在使用之前 reset_index。
标签: python pandas pivot-table melt