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

如何从小时级DatetimeIndex生成无重复的日级DatetimeIndex

问题:将小时级DatetimeIndex转换为无重复日级DatetimeIndex

我需要将小时级的DatetimeIndex转换为无重复的日级DatetimeIndex。目前我已通过以下代码生成了两个DatetimeIndex:

import pandas as pd

snapshots = pd.date_range("2050-01-01 00:00", "2050-12-31 23:00", freq="H")

days = pd.date_range("2050-01-01", "2050-12-31", freq="d")

但我希望直接从snapshots生成days。我尝试转换为PeriodIndex,但无法得到唯一日期:

days = snapshots.to_period().asfreq('d')

注:我需要的是'YYYY-MM-DD'格式的日期数据,但当前转换后会有全年8760条小时级重复数据


解决方案

直接从snapshots生成无重复日级DatetimeIndex,可以用这几种实用方法:

  • 方法1:normalize() + unique()
    normalize()将所有时间戳统一到当日00:00,再通过unique()去重,最后转回DatetimeIndex:

    days = pd.DatetimeIndex(snapshots.normalize().unique())
    
  • 方法2:提取date属性 + unique()
    直接提取每个时间戳的日期部分,去重后转为DatetimeIndex:

    days = pd.DatetimeIndex(snapshots.date.unique())
    
  • 方法3:PeriodIndex去重后转回DatetimeIndex
    先转为日级周期,去重后再转回时间戳格式:

    days = snapshots.to_period('D').unique().to_timestamp()
    

以上三种方法都能得到格式为YYYY-MM-DD的无重复日级DatetimeIndex,和手动生成的days结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:05:12