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

如何基于MultiIndex部分层级标记DataFrame的重复行?

高效标记多层MultiIndex中前两层首次出现的行

你可以直接通过操作MultiIndex层级实现更简洁高效的标记,无需创建临时列或额外DataFrame:

df['keeper'] = ~df.index.get_level_values([0, 1]).duplicated()

为什么这个方案更优?

  • 性能更高:直接针对前两层索引做重复判断,省去了原代码里assign创建临时列、drop_duplicates生成新DataFrame、isin匹配索引的冗余步骤,内存占用和计算耗时都更低,尤其适配大体积DataFrame。
  • 可读性更强:代码逻辑直白,一眼就能看出是对前两层索引的首次出现行做标记。
  • 扩展性好:如果需要标记前N层的首次出现行,只需把[0,1]替换成list(range(N))即可,比如前3层就写list(range(3))。

示例验证

用你提供的DataFrame测试,执行上述代码后得到的结果和预期完全一致:

0  keeper
lev0 lev1 lev2                  
1    1    1     0.696469    True
          2          NaN   False
     2    3     0.719469    True
          2     0.980764   False
     3    1          NaN    True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:08