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

如何在Pandas多级索引中仅针对主索引层级执行去重?

Pandas多级索引DataFrame按主索引层级去重

需求:针对MultiIndex(多级索引)的DataFrame,仅在同一主索引分组内执行去重操作,判断每组内的行是否重复,跨主索引的重复无需处理。

示例输入

entry,subentry,A,B

1 0 1.0 1.0
  1 1.0 1.0
  2 2.0 2.0

2 0 1.0 1.0
  1 2.0 2.0
  2 2.0 2.0

预期输出

entry,subentry,A,B

1 0 1.0 1.0
  1 2.0 2.0

2 0 1.0 1.0
  1 2.0 2.0

解决方案

通过groupby按主索引层级分组,再对每组应用drop_duplicates即可实现需求:

1. 构造示例DataFrame

先把示例数据转换成可运行的Pandas代码:

import pandas as pd

# 构造原始数据
data = [
    (1, 0, 1.0, 1.0),
    (1, 1, 1.0, 1.0),
    (1, 2, 2.0, 2.0),
    (2, 0, 1.0, 1.0),
    (2, 1, 2.0, 2.0),
    (2, 2, 2.0, 2.0)
]
df = pd.DataFrame(data, columns=['entry', 'subentry', 'A', 'B'])
# 设置多级索引
df = df.set_index(['entry', 'subentry'])

2. 按主索引分组去重

# 按主索引(level=0)分组,每组内执行去重
result_df = df.groupby(level=0, group_keys=False).apply(lambda x: x.drop_duplicates())

3. 查看结果

打印result_df即可得到符合预期的输出:

A    B
entry subentry         
1     0        1.0  1.0
      2        2.0  2.0
2     0        1.0  1.0
      1        2.0  2.0

补充说明

  • groupby(level=0):指定按多级索引的第0层(即主索引entry)分组
  • group_keys=False:避免分组后的结果保留额外的分组键索引
  • 若需仅针对特定列判断重复,可给drop_duplicates()传入subset参数,比如x.drop_duplicates(subset=['A', 'B'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:45:37