我有DataFrame如下:
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
任何帮助。
谢谢
答案 0 :(得分:3)
选项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
,然后进行stack
操作。
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