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

如何将DataFrame的时间戳索引设置为对应月份的第一天

解决方法

你之前的代码存在两个问题:

  • 使用了M频率,对应的是每月最后一天,不符合你要月度首日的需求
  • 加了kind='period'参数,返回的是Period类型索引,本身仅存储年月维度信息,不会显示日部分

你可以直接用MS(Month Start)作为重采样频率,不需要指定period类型,直接就能得到月度首日的datetime类型索引:

df['value'].resample('MS').sum()

如果已经生成了月度周期类型的结果,也可以手动将索引转成月度首日的标准日期格式:

res = df['value'].resample('M', kind='period').sum()
res.index = res.index.to_timestamp(freq='MS')

完整测试示例

import pandas as pd

# 构造测试数据,包含8、9两个月份的日期
dates = pd.date_range(start='2018-08-10', end='2018-09-20', freq='D')
df = pd.DataFrame({'value': range(len(dates))}, index=dates)

# 直接重采样到月度首日
result = df['value'].resample('MS').sum()
print(result)

运行输出结果的索引就是你需要的2018-08-01、2018-09-01格式的标准日期,多个DataFrame统一用该方法处理后索引完全对齐,可以直接做后续的关联、运算操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:54:03