Pandas DataFrame:如何按Datetime索引中的年月获取列元素?
如何通过年月匹配月度分组后的DataFrame数据
当然可以!你已经将DataFrame的索引设置为带freq='M'的DatetimeIndex,这让按年月定位数据变得非常便捷。下面是几种实用的实现方法:
方法1:直接使用字符串格式的年月/月末日期匹配
你可以直接传入目标年月的字符串(或精确的月末日期字符串),通过loc索引器获取对应数据:
- 获取2018年5月整行数据:
输出结果会是:df.loc['2018-05']price 10.0 debt 0.0 Name: 2018-05-31 00:00:00, dtype: float64 - 精准获取2018年5月的
price列值:
输出:df.loc['2018-05', 'price']10.0
方法2:使用datetime对象匹配
如果你的业务逻辑中需要用datetime对象来指定日期,可以直接传入创建好的datetime实例:
import datetime # 创建目标月末日期对象 target_date = datetime.datetime(2018, 6, 30) # 获取对应行的debt列值 df.loc[target_date, 'debt']
输出:0.0
方法3:模糊匹配年月(无需指定月末日期)
由于你的索引是月度频率(freq='M'),pandas支持模糊匹配年月字符串,不需要精确到具体日期:
# 获取2018年7月的debt列值 df.loc['2018-07', 'debt']
输出:10.0
额外提示
如果需要判断某个年月是否存在于索引中,可以用以下方式:
# 检查2018年8月是否存在 '2018-08' in df.index
返回False(因为你的数据里没有8月的记录),这样可以避免直接索引时抛出KeyError。
内容的提问来源于stack exchange,提问作者Axioms
相关产品推荐
相关产品推荐

