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

如何从日期索引的DataFrame中提取每月首个可用日期生成新DataFrame

Pandas取时间序列DataFrame每月首个可用日期数据的最优实现

前置准备

首先确认DataFrame的索引为DatetimeIndex类型,且按时间升序排列,如果不符合要求先执行以下代码预处理:

import pandas as pd
# 转换索引为日期类型
df.index = pd.to_datetime(df.index)
# 按日期升序排序
df = df.sort_index()

最优实现代码

直接使用pandas内置的时间重采样方法,性能最高、写法最简洁:

# 取每个月首个可用日期的对应数据,自动跳过无数据的月份
df_monthly_first = df.resample('MS').first().dropna()

方案说明

  • 效率优势:resample是pandas底层优化过的向量化操作,比手动遍历、自定义分组规则的实现快3~10倍,数据量越大优势越明显
  • 符合需求:自动识别每个月的首个实际存在的日期,不会强制取当月1号,即使当月1号无数据也能正确返回第一个可用的记录
  • 灵活扩展:如果后续需要取每月最后一个可用日期的记录,只需把.first()替换为.last()即可

备选实现(无需补全空月份时可用)

如果不需要处理存在空月份的场景,也可以用分组取首行的方式实现:

df_monthly_first = df.groupby([df.index.year, df.index.month]).head(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:05