【问题标题】:Creating empty pandas dataframe with Multi-Index使用多索引创建空的熊猫数据框
【发布时间】:2021-08-14 15:35:43
【问题描述】:

我正在尝试创建一个带有多索引的空 pandas.Dataframe,以后我可以用我的数据按列填充。我查看了其他答案(here 和 here),但它们都适用于未按列填充的数据,或者以某种方式连接在不同列中的数据。

我希望包含在 Multi-Index 中的信息如下所示:

GCM_list = ['BCC-CSM2-MR', 'CAMS-CSM1-0', 'CESM2', 'CESM2-WACCM', 'CMCC-CM2-SR5', 'EC-Earth3', 'EC-Earth3-Veg', 'FGOALS-f3-L', 'GFDL-ESM4', 'INM-CM4-8', 'INM-CM5-0', 'MPI-ESM1-2-HR', 'MRI-ESM2-0', 'NorESM2-MM', 'TaiESM1']
SSP_list = ['SSP_126', 'SSP_245', 'SSP_370', 'SSP_585']
index_years = [2030, 2040, 2050, 2060, 2070, 2080, 2090, 2100]

我希望它看起来像这样(GCM_list 中的前三个项目):

               BCC-CSM2-MR                               CAMS-CSM1-0                                CESM2
     SSP_126  SSP_245  SSP_370  SSP_585      SSP_126  SSP_245  SSP_370  SSP_585       SSP_126  SSP_245  SSP_370  SSP_585
2030    |        |
2040    |        |
2050    V        V
2060    1        2
2070
2080
2090
2100

前两列中的“箭头”应该表示在创建索引后我希望如何以及以什么顺序填充数据框 - 如果这对这个问题很重要的话。

我尝试过像这样构建索引,但我不确定结果如何。我应该如何进行?有没有办法构建这个空数据框,以便我可以逐列填充它?

arrays = [GCM_list, SSP_list]
index = pd.MultiIndex.from_arrays(arrays, names=('GCM', 'SSP'))
>>> index
MultiIndex(levels=[[u'BCC-CSM2-MR', u'CAMS-CSM1-0', u'CESM2', u'CESM2-WACCM', u'CMCC-CM2-SR5', u'EC-Earth3', u'EC-Earth3-Veg', u'FGOALS-f3-L', u'GFDL-ESM4', u'INM-CM4-8', u'INM-CM5-0', u'MPI-ESM1-2-HR', u'MRI-ESM2-0', u'NorESM2-MM', u'TaiESM1'], [u'SSP_126', u'SSP_245', u'SSP_370', u'SSP_585']],
           labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]],
           names=[u'GCM', u'SSP'])

【问题讨论】:

    标签: pandas dataframe python-2.7 multi-index


    【解决方案1】:

    使用MultiIndex.from_product:

    arrays = [GCM_list, SSP_list]
    mux = pd.MultiIndex.from_product(arrays, names=('GCM', 'SSP'))
    
    df = pd.DataFrame(columns=mux, index=index_years)
    

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 1970-01-01
      • 2016-06-16
      • 2017-05-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2021-02-04
      相关资源
      最近更新 更多