如何用pandas创建日期为一级、患者为二级的multi level index DataFrame
多层索引DataFrame实现方案
直接使用pandas内置的MultiIndex工具就能快速生成符合要求的双层索引结构,完全匹配你想要的“一行核心代码完成索引构建”的需求,不需要手动循环拼接索引条目。
基于现有代码的改造逻辑
保留你已经写好的日期索引生成部分,仅需替换DataFrame初始化时的索引参数即可,参考代码如下:
# 保留原有日期索引生成逻辑 factor_index = pd.date_range(start=startDate, end=endDate) factor_index.name = 'Date' # 核心:生成日期与患者列表的交叉双层索引 # 替换为你实际准备好的患者列表变量,例如 patient_list multi_index = pd.MultiIndex.from_product( [factor_index, patient_list], names=['Date', 'Patient'] ) # 基于生成的多层索引初始化空DataFrame factorData = pd.DataFrame(index=multi_index)
注意事项
from_product方法会自动对传入的两个序列做全量笛卡尔组合,也就是每一个日期都会对应挂载列表内的全部患者作为二级索引,和你预期的结构完全一致,不需要手动写循环拼接条目。- 如果不同日期对应的患者列表存在差异(并非所有日期都包含全量患者),可以将
from_product替换为pd.MultiIndex.from_arrays,手动传入一一匹配的日期序列、患者序列构建索引,操作效率同样很高。
索引构建完成后,可直接运行
factorData.index查看返回的结构信息,确认两级索引的层级、名称符合预期后,再向DataFrame中填充对应的指标数据即可。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

