【问题标题】:Convert MultiIndex Names to DataFrame Column Values & Rename DataFrame Columns将 MultiIndex 名称转换为 DataFrame 列值并重命名 DataFrame 列
【发布时间】:2019-08-06 02:55:57
【问题描述】:

我有下面带有 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

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    DataFrame.unstackDataFrame.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
    

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2022-09-24
      • 1970-01-01
      • 2017-11-15
      • 2013-03-22
      • 1970-01-01
      • 2019-12-01
      • 2019-07-21
      • 2019-09-26
      相关资源
      最近更新 更多