繁体   English   中英

将MultiIndex名称转换为DataFrame列值并重命名DataFrame列

[英]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.unstackDataFrame.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM