Python中的Stack和Pivot Dataframe

时间:2015-10-16 14:10:24

标签: python pandas stack pivot dataframe

我有一个广泛的数据框,我想要堆叠和转动,并且无法弄清楚如何做到这一点。

以下是我的开始

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的匹配值,最后将Topic作为索引。这甚至可能吗?

编辑:正如Randy C指出的那样,如果我使用枢轴,我可以得到以下内容;

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

2 个答案:

答案 0 :(得分:3)

也许:

In[249]: testdf.pivot("Org","Topic").T
Out[249]: 
Org          1    2    3    5
    Topic                    
DE1 A        a  NaN  NaN    f
    B        c    d  NaN  NaN
    C      NaN  NaN    e  NaN
DE2 A        b  NaN  NaN    h
    B        c    a  NaN  NaN
    C      NaN  NaN    d  NaN
DE3 A        a  NaN  NaN    f
    B        c    b  NaN  NaN
    C      NaN  NaN    e  NaN

答案 1 :(得分:1)

我并不是100%清楚你想要的输出是什么,但是我最好能理解它.pivot()似乎确实至少接近你正在寻找的东西:

In [8]: testdf.pivot("Topic", "Org")
Out[8]:
       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