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

多索引DataFrame中子集数据高效修改的最优方法探究

更快修改多索引DataFrame子集的方法

针对你遇到的多索引DataFrame修改子集的性能问题,推荐以下两种更高效的写法,性能接近你提到的第一种快速方法,同时适配第二个维度大小不固定的场景:

方法1:元组+slice(None)直接定位

利用多索引的层级匹配规则,直接指定第一个层级为目标值,第二个层级匹配所有元素:

%%timeit
df.loc[(0, slice(None)), 'C'] = 1.
# 测试结果示例:920 µs ± 85 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

方法2:使用pd.IndexSlice提升可读性

如果多索引层级较多,用IndexSlice可以让代码更清晰,本质和方法1一致:

import pandas as pd

idx = pd.IndexSlice
%%timeit
df.loc[idx[0, :], 'C'] = 1.
# 性能和方法1几乎无差异

为什么这两种方法更快?

这两种写法都是直接通过多索引的层级定位逻辑筛选数据,不需要像get_level_values那样先提取层级值、生成布尔索引再筛选,避免了额外的序列计算开销,因此性能大幅优于你当前使用的布尔索引方法,同时完全适配第二个维度大小不固定的场景。

内容的提问来源于stack exchange,提问作者stevew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:10:38