【问题标题】:Pandas dataframe transpose with original row and column values具有原始行和列值的 Pandas 数据帧转置
【发布时间】:2015-08-25 20:13:08
【问题描述】:

有谁知道如何用原始行和列值转置 pandas 数据框?我正在使用 .iterrows() 遍历每一行和每一列,但我确信有更好的方法来做到这一点。也许使用枢轴?谢谢!

DF 看起来像

    a   b   c
0   11  12  13
1   21  22  23
2   31  32  33

我希望新的 DF 是

    row col Val
0   0   a   11
1   0   b   12
2   0   c   13
3   1   a   21
4   1   b   22
5   1   c   23
6   2   a   31
7   2   b   32
8   2   c   33

【问题讨论】:

    标签: python pandas pivot transpose


    【解决方案1】:

    这是使用stack() 的一种方式。

    res = df.stack().reset_index()
    res.columns = 'row col Val'.split()
    res
    
       row col  Val
    0    0   a   11
    1    0   b   12
    2    0   c   13
    3    1   a   21
    4    1   b   22
    5    1   c   23
    6    2   a   31
    7    2   b   32
    8    2   c   33
    

    【讨论】:

    • 哇,这太棒了,正是我想要的!非常感谢!
    【解决方案2】:

    你可以使用pandas.melt:

    >>> d
        a   b   c
    0  11  12  13
    1  21  22  23
    2  31  32  33
    
    >>> pandas.melt(d.reset_index(), id_vars='index')
       index variable  value
    0      0        a     11
    1      1        a     21
    2      2        a     31
    3      0        b     12
    4      1        b     22
    5      2        b     32
    6      0        c     13
    7      1        c     23
    8      2        c     33
    

    那里的值的顺序有点不同,但您可以按您喜欢的任何列对其进行排序,以使事物达到您想要的顺序。

    【讨论】:

      【解决方案3】:
      import pandas as pd
      df = pd.DataFrame({'A': {0: 11, 1: 21, 2: 31},
                         'B': {0: 12, 1: 22, 2: 23},
                         'C': {0: 31, 1: 32, 2: 33}})
      
      pd.melt(df, value_vars=['A','B','C'])
            variable  value
      0        A     11
      1        A     21
      2        A     31
      3        B     12
      4        B     22
      5        B     23
      6        C     31
      7        C     32
      8        C     33
      

      【讨论】:

      • 也需要保留行索引,但是融化似乎是一种方法。谢谢
      猜你喜欢
      • 2023-02-10
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多