如何将 Column 更改为 headers 并将 headers 更改为 Column

How to change ColumnB to headers and headers to ColumnB

我不知道这是否称为熔化或未熔化,或枢轴或反枢轴,但我想知道我是否可以将我的 ColumnB 更改为 headers,从 ColumnF(和数据点)开始在这些 headers) 下,同样,从 ColumnF 开始,将 headers 更改为 ColumnB。

这是我正在查看的屏幕截图。

这是我的数据。

    qyear   Line_Item                              IDRSSD   schedule_code   RCON3543    RCON3545    RCON3547    RCON3548
97  2011Q1  TRDG ASTS ASTBCKD SCTY AUTO LN         1004368  RCD             7360        7360        7583        ,583 
98  2012Q1  TRDG ASTS ASTBCKD SCTY OTHR CNSMR LN   1004368  RCD             17807       17807       18092       18092
99  2013Q1  TRDG ASTS ASTBCKD SCTY CMRL  IND LN    1004368  RCD             20073       20073       20971       20971
100 2011Q1  TRDG ASTS ASTBCKD SCTY OTHR LN         1004470  RCD             0       0       0       0
101 2012Q1  TRDG ASTS RTND BNFCL INT SCTY          1004470  RCD             0       0       0       0
102 2013Q1  TRDG ASTS EQT SCTY RDLY DET FV         1004470  RCD             0       0       0       0
103 2012Q1  TRDG ASTS EQT SCTY OTHR                1005075  RCD             0       0       0       0
104 2013Q1  TRDG ASTS LN PEND SCTY                 1005075  RCD             0       0       0       0
105 2011Q1  1ST ITEMIZED AMT FOR OTHR TRDG ASTS    1005440  RCD             0       0       0       0
106 2012Q1  2ND ITEMIZED AMT FOR OTHR TRDG ASTS    1005440  RCD             0       0       0       0
107 2013Q1  3RD ITEMIZED AMT FOR OTHR TRDG ASTS    1005440  RCD             0       0       0       0
108 2011Q1  1ST ITEMIZED AMT FOR OTHR TRDG ASTS    1005459  RCD             0       0       0       0
109 2012Q1  2ND ITEMIZED AMT FOR OTHR TRDG ASTS    1005459  RCD             0       0       0       0
110 2011Q1  3RD ITEMIZED AMT FOR OTHR TRDG ASTS    100553   RCD             0       0       0       0
111 2012Q1  SFP TPS ISS FNCL INSTITUTION           100553   RCD             0       0       0       0
112 2011Q1  SFP TPS ISS RE INV TR                  1005552  RCD             0       0       0       0
113 2012Q1  SFP CORP SIMILAR LN 1                  005552   RCD             0       0       0       0
114 2013Q1  SFP 1T4 FMLY RES MBS ISS US GSE        1005552  RCD             0       0       0       0
115 2011Q1  SFP 1T4 FMLY RES MBS NOT ISS GSE       100562   RCD             0       0       0       0
116 2012Q1  TRDG MBS PT SCTY ISS GUAR FFG          100562   RCD             0       0       0       0
117 2013Q1  TRDG OTHR MBS ISS GUAR FFG             100562   RCD             0       0       0       0
118 2011Q1  TRDG ASSET MBS OTHR RES MBS            1005655  RCD             0       0       0       0
119 2012Q1  TRDG ASSET STRD FNC PROD CASH          1005655  RCD             0       0       0       0
120 2013Q1  TRDG OTHR STRD FNC PROD SYN            1005655  RCD             0       0       0       0
121 2011Q1  TRDG OTHR STRD FNC PROD HYBRID         1005851  RCD             0       0       0       0
122 2012Q1  TRDG ASSET OTHR DEBT SCTY CNSL         1005851  RCD             0       0       0       0

我希望最终视图看起来像这样。

我注意到转置几乎可以工作,但这会翻转 ColumnC 和 ColumnD,我不想触及这两列。我想将 ColumnC 和 ColumnD 保留在原处,将 ColumnB 移至 headers,将 headers 移至 ColumnB。是否有可能做到这一点?非常感谢!

我认为您正在查看 stackunstack

的组合
(df.set_index(['qyear','Line_Item','IDRSSD','schedule_code'])
   .stack()
   .unstack('qyear')
   .reset_index()
)

unstack然后transpose:

(df.set_index(['qyear','Line_Item','IDRSSD','schedule_code'])
   .unstack(level=['Line_Item','IDRSSD','schedule_code'])
   .T.reset_index()
)

melt然后pivot:

(df.melt(id_vars=['qyear','Line_Item','IDRSSD','schedule_code'])
   .pivot_table(index=['Line_Item','IDRSSD','schedule_code', 'variable'], 
                columns='qyear', values='value', aggfunc='first')
   .reset_index()
)