python - Python 中的堆栈和数据透视数据框

标签 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 的匹配值,最后将主题作为索引。这可能吗?

编辑:正如 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

最佳答案

也许:

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

关于python - Python 中的堆栈和数据透视数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33172581/

相关文章:

python - 在plotly Dash中显示一个简单的matplotlib图

python - 在 Pandas 中添加计算列

Java Scanner hasNextInt() 导致无限循环

java - 应用程序关闭后恢复 Android 返回堆栈

java - 堆栈中的内存分配和局部变量的删除

python - 在线性回归中比较 StandardScaler 与 Normalizer 的结果

python - PyEval_CallObject 和 PyObject_CallObject 返回一个空对象

python - GAE Python 应用程序无法启动 "No URLMap entries found in application configuration"

python - 使用插值标准化 Pandas 中的时间序列

python - 将 DataFrame 拆分为两个 DataFrame 并过滤这两个 DataFrame 以获得相同的维度