时间格式数据处理

这个版块很重要,但是每次都记不住,主要从类库分别记录

datetime类库

构造时间数据对象

  • 直接构建

    datetime.date(2019,8,26)
  • 获取今天的时间

    datetime.date.today()
  • 取指定时间部分

    a = datetime.date.today()
    a.year # 年
    a.month # 月
    a.day # 日

str格式转换

str格式转为时间,随即可以进行仅时间格式可进行的操作

  • str转时间

    datetime.strptime(str,'%H:%M:%S.%f')
    datetime.strptime(str,'%Y-%m-%d')
  • 时间转str

    datetime.strftime(str,'%H:%M:%S.%f')

时间间隔timedelta

  • 两时间加减

    a1 = datetime.date(2019,8,26)
    a2 = datetime.date(2019,9,26)
    (a2 - a1).days # <- datetime.timedelta(31)
    (a1 - a2).days # <- 31

.seconds表示将此间隔转为秒为单位

  • 处理间隔

    a1 = datetime.date(2019,8,26)
    delta = datetime.timedelta(days=10)
    a1 + delta # <- datetime.date(2019, 9, 5)
    (a1 + delta).isoformat() # <- '2019-09-05'
    (a1 + delta).strftime('%Y-%m-%d') # <- '2019-09-05'

生成等间距时间序列

pd.date_range(start=self.beginDate, end=self.endDate, freq='Q').strftime('%Y%m%d').tolist()

显然其中freq参数控制间隔为季度

pandas中的时间处理

to_datetimestr转时间戳

将某列数据,进行格式化,转换为时间格式

pd.to_datetime('20221101',format='%Y%m%d') # <- Timestamp('2022-11-01 00:00:00')
pd.to_datetime(20221101,format='%Y%m%d') # <- Timestamp('2022-11-01 00:00:00')
pd.to_datetime('2022-11-1',format='%Y-%m-%d') # <- Timestamp('2022-11-01 00:00:00')

pandas.tseries.offsets:跳转

这部分主要是基于时间戳,获取符合条件的时间,举例说明

  • 转至月末

    pd.Timestamp('2017-01-01 09:10:11') + pd.tseries.offsets.MonthEnd(1)
  • 前五年的今天

    pd.to_datetime('2022-11-1') - pd.DateOffset(years=5) # <-Timestamp('2017-11-01 00:00:00')

pandas.Series.dt:批量操作

pandas.Series中的每一个时间戳对象,进行批量操作,类似于apply

AnalystConsData['writeDate_shift1D'].dt.strftime('%Y-%m-%d') # 时间戳批量转回str

Datetime format specification

最后更新于