行与列的转置,而不是列与行

  • 本文关键字:转置 python pandas
  • 更新时间 :
  • 英文 :


transpose可以通过所有列的第一行然后只有所有列的第二行来转换数据,而不是通过所有行的第一列然后只有所有行的第二列吗?

表示需要将列转换为行,所有相同的数据可以在一个组中。

原始数据:

columnA     columnB     columnC     columnD     columnE   ...
IdA          a           b            c           d
IdB          5           6            7           8
IdC          e           f            g           h
IdD          4           5            6           7   
transpose = pd.melt(id_vars = ['columnA']
,var_name = ['header']
,value_name = 'info')

输出:

columnA    header     info
IdA     columnB      a
IdB     columnB      5
IdC     columnB      e
IdD     columnB      4
IdA     columnC      b
IdB     columnC      6
IdC     columnC      f
IdD     columnC      5
...

预期输出:

columnA    header     info
IdA     columnB      a
IdA     columnC      b
IdA     columnD      c
IdA     columnE      d
IdB     columnB      5
IdB     columnC      6
IdB     columnD      7
IdB     columnE      8
...

您将需要使用stack:

out = (df.set_index('columnA').rename_axis(columns='header')
.stack(dropna=False).reset_index(name='info')
)

NB。默认情况下,stack删除NaN值,要保留NaN值,请使用dropna=False参数。

输出:

columnA   header info
0      IdA  columnB    a
1      IdA  columnC    b
2      IdA  columnD    c
3      IdA  columnE    d
4      IdB  columnB    5
5      IdB  columnC    6
6      IdB  columnD    7
7      IdB  columnE    8
8      IdC  columnB    e
9      IdC  columnC    f
10     IdC  columnD    g
11     IdC  columnE    h
12     IdD  columnB    4
13     IdD  columnC    5
14     IdD  columnD    6
15     IdD  columnE    7

最新更新