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

如何从带MultiIndex的DataFrame中删除2月29日数据

精准删除MultiIndex中仅2月29日的数据

嗨,我完全懂你的困扰——直接用drop(29, level=1)确实会不分青红皂白删掉所有月份的29号数据,咱们得精准定位到2月29日这个特定的索引组合才行。这里有两种简单可靠的方法:

方法1:用布尔索引筛选保留非目标行

通过索引层级筛选出不是2月29日的行,重新赋值给原DataFrame:

# 获取月份(level=0)和日期(level=1)的索引值,组合条件取反
daily_mean = daily_mean[~((daily_mean.index.get_level_values(0) == 2) & (daily_mean.index.get_level_values(1) == 29))]

解释一下:

  • get_level_values(0):提取MultiIndex中第一层级(也就是月份)的所有值
  • get_level_values(1):提取第二层级(也就是日期)的所有值
  • ~符号是对布尔条件取反,这样就保留了所有不是2月29日的行

方法2:直接删除指定的MultiIndex元组

因为MultiIndex的每个索引项是一个元组(月, 日),所以可以直接把目标组合传给drop方法:

# 精准删除(2, 29)这个索引组合
daily_mean = daily_mean.drop((2, 29))

这个方法更简洁,前提是你确认MultiIndex的层级顺序是先月份、后日期——如果不确定的话,可以先运行daily_mean.index.names查看索引名称,确认层级对应关系。

如果你的数据里有跨年份的2月29日(不过根据你的描述,索引只有月和日,应该不存在这种情况),只需要把所有要删除的索引元组列出来传给drop就行,但针对你当前的需求,上面两种方法完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:40:58