pandas - 使用多索引创建空的熊猫数据框
问题描述
我正在尝试使用 Multi-Index 创建一个空的 pandas.Dataframe,以后可以用我的数据按列填充。我查看了其他答案(此处和此处),但它们都适用于未按列填充的数据,或者以某种方式连接在不同列中的数据。
我希望包含在多索引中的信息如下所示:
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'])
解决方案
arrays = [GCM_list, SSP_list]
mux = pd.MultiIndex.from_product(arrays, names=('GCM', 'SSP'))
df = pd.DataFrame(columns=mux, index=index_years)
推荐阅读
- javascript - 编辑表单元素(下拉列表和输入日期)未正确加载
- php - 注意:未定义索引:REMOTE_ADDR
- groovy - 如何分离 Traits 的源文件并在 Groovy 中对它们进行类型检查?
- hadoop - 当 hive 将文件从 HDFS 加载到表中时,如何阻止 hive 移动数据?
- android - 如何通过 USB 串口获取 USB 设备型号?
- string - HIVE 将时间戳列数据呈现为 NULL
- python-3.x - Python:读取数据文件并处理/过滤数据
- vue.js - 如果值大于 50,则更改进度条的颜色 Bootstrap-Vue
- javascript - nodejs REPL 不处理 JSON.parse()?
- android - 尝试保存和恢复实例