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

Pandas中筛选日期索引时忽略日属性的简洁语法是什么?

解决DatetimeIndex按年月筛选的简洁写法

你用df[df.index=='2016-01']返回空的原因是:你的索引是精确到日的Datetime类型,直接比较'2016-01'时,Pandas会自动将其解析为'2016-01-01 00:00:00',只有索引恰好是这一天的行才会被匹配,自然拿不到整个1月的数据。

下面是几种简洁的、忽略日属性的筛选方法:

  • 最简洁的索引切片法:Pandas的DatetimeIndex原生支持部分日期字符串的索引,直接写年月就能选中整个月的所有行:

    df.loc['2016-01']
    

    这种写法完全符合你想要的类似'2016-01-*'的通配符效果,甚至还支持更灵活的范围,比如df.loc['2016-01':'2016-03']可直接选中一季度数据。

  • 字符串格式化匹配:把DatetimeIndex转成YYYY-MM格式的字符串再做等值比较:

    df[df.index.strftime('%Y-%m') == '2016-01']
    

    这种写法扩展性强,比如要匹配特定季度可以转成'%Y-Q%q',或者自定义其他日期格式。

  • 直接访问日期属性:利用DatetimeIndex的year和month属性做组合筛选:

    df[(df.index.year == 2016) & (df.index.month == 1)]
    

    适合需要同时筛选年、月、日等多个维度的场景,逻辑直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:08