Pandas 数据帧与原始行和列值的转置

Pandas dataframe transpose with original row and column values

有谁知道如何用原始行值和列值转置 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

这是使用 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

您可以使用 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

值的顺序略有不同,但您可以按您喜欢的任何列对其进行排序,以按照您想要的顺序排列。

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