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

Pandas drop_duplicates()返回异常结果,是否有人遇到过该问题?

问题分析与解决方法

问题原因

drop_duplicates() 默认仅对比DataFrame列中的数据,不会将MultiIndex纳入重复判断逻辑。你的DataFrame里所有行的values列值都是10,所以默认会判定所有行都是重复项,只保留第一行。

解决方案

方案1:仅针对MultiIndex去重

如果目标是保留索引唯一的行(即只去除索引完全重复的第4行),直接利用索引的去重方法即可:

df = df[~df.index.duplicated()]

执行后得到预期的3行结果:

values
2020-09-30 2020-12-31 2021-01-15      10
                      2021-01-30      10
                      2021-02-04      10

方案2:同时校验索引与列数据去重

如果需要同时判断索引和列数据是否都重复(比如索引相同但列值不同时保留,两者都相同时去重),可以先将索引转为普通列,去重后再恢复索引:

# 索引转为普通列
df_reset = df.reset_index()
# 执行去重(默认保留首次出现的重复项)
df_reset = df_reset.drop_duplicates()
# 恢复原三级索引
df = df_reset.set_index(['level_0', 'level_1', 'level_2'])

补充说明

drop_duplicates() 的subset参数可指定判断重复的列,但默认不包含索引。若不想转换索引,也可手动将索引各级纳入subset,但操作不如上述两种方法直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:22:12