【发布时间】:2016-01-15 07:56:11
【问题描述】:
我有一个很宽的数据框,我想堆叠和旋转,但不知道该怎么做。
这是我的开始
testdf = pd.DataFrame({"Topic":["A","B","B","C","A"],
"Org":[1,1,2,3,5,],
"DE1":["a","c","d","e","f"],
"DE2":["b","c","a","d","h"],
"DE3":["a","c","b","e","f"] })
testdf
Out[40]:
DE1 DE2 DE3 Org Topic
0 a b a 1 A
1 c c c 1 B
2 d a b 2 B
3 e d e 3 C
4 f h f 5 A
我想要做的是旋转表格,以便 Org 的列值是列名,每个名称的列值是 D1、D2 和 D3 的匹配值,最后将主题作为索引。这甚至可能吗?
编辑:正如 Randy C 所指出的,如果我使用 pivot 我可以得到以下结果;
testdf.pivot(index = "Topic",columns = "Org")
Out[44]:
DE1 DE2 DE3
Org 1 2 3 5 1 2 3 5 1 2 3 5
Topic
A a NaN NaN f b NaN NaN h a NaN NaN f
B c d NaN NaN c a NaN NaN c b NaN NaN
C NaN NaN e NaN NaN NaN d NaN NaN NaN e NaN
这是接近的,但我想拥有它,以便 DE 值是“堆叠的”而不是宽的。结果看起来像;
Org 1 2 3 5
Topic
A a NaN NaN f
A b NaN NaN h
A a NaN NaN f
B c d NaN NaN
B c a NaN NaN
B c b NaN NaN
C NaN NaN e NaN
C NaN NaN d NaN
C NaN NaN e NaN
【问题讨论】:
标签: python pandas stack pivot dataframe