旋转 table 并将列与 headers 合并

Pivot table and merge column with headers

我有如下数据框:

 Ranges Relative_17-Sep Relative_17-Oct Relative_17-Nov
  <=20%  0.65            0.36            0.29
  >20%   99.35           99.64           99.71

我正在尝试找到一种方法将其转换为:

"Sep17<=20%" "Sep17>20%"   "Oct17<=20%" "Oct17>20%" "Nov17<=20%" "Nov17>20%"
 0.65          99.35        0.36            99.64     0.29        99.71

这方面的任何帮助。

谢谢

选项 1
melt

v = df.melt('Ranges')

df = pd.DataFrame(
    v['value'].values, 
    index=v['variable'].str.split('_').str[-1] + v['Ranges']
).T

df
   17-Sep<=20%  17-Sep>20%  17-Oct<=20%  17-Oct>20%  17-Nov<=20%  17-Nov>20%
0         0.65       99.35         0.36       99.64         0.29       99.71

选项 2
修改 df.columns,然后进行 stacking 操作。

df.columns = df.columns.str.split('_').str[-1]
v = df.set_index('Ranges').stack()

df = pd.DataFrame(
    v.values, 
    index=v.index.get_level_values(1) + v.index.get_level_values(0)
).T

df
   17-Sep<=20%  17-Oct<=20%  17-Nov<=20%  17-Sep>20%  17-Oct>20%  17-Nov>20%
0         0.65         0.36         0.29       99.35       99.64       99.71