You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas带MultiIndex的层级DataFrame按索引取值效率优化咨询

优化方案

你的性能瓶颈来自apply逐行遍历+单条索引查询,属于典型的行迭代低效操作。我们直接利用pandas MultiIndex的对齐特性做向量化运算,既不额外占用大量内存,又能把性能提升两个数量级以上。

你只需要替换原代码中apply相关的逻辑即可,其余部分无需改动:

a_mask = df_child.index.get_level_values('a') == 0
target_child = df_child.loc[a_mask]
# 批量取出匹配的父表值,仅取需要的部分,不会产生全量重复数据
match_par_val = df_par.loc[target_child.index.droplevel('c'), 'par_val'].to_numpy()
df_child.loc[a_mask, 'solution'] = match_par_val / target_child['child_val'].to_numpy()

方案优势

  • 性能提升明显:避免了逐行操作,向量化运算的耗时几乎可以忽略,即便迭代量到十万级也不会有明显卡顿
  • 内存占用可控:仅临时拉取需要用到的父表对应值,没有将par_val全量合并到子DataFrame,不会产生大量重复数据,和原方案的内存占用基本一致
  • 逻辑完全兼容:依赖索引精确匹配,计算结果和你原来的solution函数输出完全一致

内容的提问来源于stack exchange,提问作者Python on Toast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:24:03