[英]Convert MultiIndex Names to DataFrame Column Values & Rename DataFrame Columns
我下面有带有MultiIndex列的数据框,需要准备常规数据框
DF:
Instrument PDKRW1M
Field ER
Date
2019-02-28 1124.0
2019-03-01 1125.5
2019-03-04 1126.0
2019-03-05 1126.5
2019-03-06 1127.0
2019-03-07 1132.0
2019-03-08 1133.5
2019-03-11 1133.0
2019-03-12 1128.0
2019-03-13 1129.5
2019-03-14 1135.0
df.columns:
MultiIndex(levels=[['PDKRW1M'], ['ER']],
labels=[[0], [0]],
names=['Instrument', 'Field'])
要准备这样的数据框:
Date Value Instrument Field
2019-02-28 1124.0 PDKRW1M ER
2019-03-01 1125.5 PDKRW1M ER
2019-03-04 1126.0 PDKRW1M ER
2019-03-05 1126.5 PDKRW1M ER
2019-03-06 1127.0 PDKRW1M ER
2019-03-07 1132.0 PDKRW1M ER
2019-03-08 1133.5 PDKRW1M ER
2019-03-11 1133.0 PDKRW1M ER
2019-03-12 1128.0 PDKRW1M ER
2019-03-13 1129.5 PDKRW1M ER
2019-03-14 1135.0 PDKRW1M ER
2019-03-14 1135.0 PDKRW1M ER
将DataFrame.unstack
与DataFrame.reset_index
一起使用, DataFrame.reset_index
第一级和第二级用于DatetimeIndex
:
df = df.unstack().reset_index(level=[0,1], name='Value')
#for column Date
#df = df.unstack().reset_index(name='Value')
print (df)
Instrument Field Value
Date
2019-02-28 PDKRW1M ER 1124.0
2019-03-01 PDKRW1M ER 1125.5
2019-03-04 PDKRW1M ER 1126.0
2019-03-05 PDKRW1M ER 1126.5
2019-03-06 PDKRW1M ER 1127.0
2019-03-07 PDKRW1M ER 1132.0
2019-03-08 PDKRW1M ER 1133.5
2019-03-11 PDKRW1M ER 1133.0
2019-03-12 PDKRW1M ER 1128.0
2019-03-13 PDKRW1M ER 1129.5
2019-03-14 PDKRW1M ER 1135.0
如有必要,更改列的顺序:
df = df[df.columns[-1:].tolist() + df.columns[:-1].tolist()]
#for column Date
#df = df[df.columns[-2:].tolist() + df.columns[:-2].tolist()]
print (df)
Value Instrument Field
Date
2019-02-28 1124.0 PDKRW1M ER
2019-03-01 1125.5 PDKRW1M ER
2019-03-04 1126.0 PDKRW1M ER
2019-03-05 1126.5 PDKRW1M ER
2019-03-06 1127.0 PDKRW1M ER
2019-03-07 1132.0 PDKRW1M ER
2019-03-08 1133.5 PDKRW1M ER
2019-03-11 1133.0 PDKRW1M ER
2019-03-12 1128.0 PDKRW1M ER
2019-03-13 1129.5 PDKRW1M ER
2019-03-14 1135.0 PDKRW1M ER
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.