datetime与DatetimeIndex的基础语法及示例

datetime

生成datetime对象

  • datetime(year,month,day,hour,minute,second,微秒)
  • datetime.now():返回当前的日期时间
from datetime import datetime
datetime(2020, 5, 23, 8, 52, 30, 82549)
Out[3]: datetime.datetime(2020, 5, 23, 8, 52, 30, 82549)  
datetime(2020, 5, 23)
Out[4]: datetime.datetime(2020, 5, 23, 0, 0)
datetime.now()
Out[5]: datetime.datetime(2020, 5, 31, 9, 48, 46, 968953)

生成date对象

  • date(year,month,day)
from datetime import date
date(2020, 5, 23)
Out[6]: datetime.date(2020, 5, 23)

生成time对象

  • time(hour,minute,second)
from datetime import time
time(8, 54, 9)
Out[7]: datetime.time(8, 54, 9)

生成timedelta对象

  • 两datetime对象相减生成datedelta对象
datetime(2020, 5, 23) - datetime(1995, 6, 8)
Out[8]: datetime.timedelta(days=9116)
  • 直接生成timedelta对象
from datetime import timedelta
delta3 = timedelta(12,12900)
print(delta3)
Out[11]: datetime.timedelta(days=12, seconds=12900)
  • timedelta对象属性
delta3.days
Out[12]: 12
delta3.seconds
Out[13]: 12900

字符串与datetime互相转换

datetime转字符串

datetime(2020, 5, 23).strftime('%Y-%m-%d')
Out[14]: '2020-05-23'

字符串转datetime

1)strptime方法
datetime.strptime('5/20/2020',  # 日期字符串
                  '%m/%d/%Y'  # 与日期字符串匹配的格式字符串
                 )
Out[15]: datetime.datetime(2020, 5, 20, 0, 0)2)parse
from dateutil.parser import parse
parse('5/20/2020')
Out[16]: datetime.datetime(2020, 5, 20, 0, 0)


DatetimeIndex

生成时间戳索引

  • pd.date_range用于根据指定频率生成指定长度的DatetimeIndex
pd.date_range('2012-04-10','2012-12-01',  #指定长度
              freq='M'  # 指定频率(P314) M代表每个月月底
              )
Out[17]: 
DatetimeIndex(['2012-04-30', '2012-05-31', '2012-06-30', '2012-07-31',
               '2012-08-31', '2012-09-30', '2012-10-31', '2012-11-30'],
              dtype='datetime64[ns]', freq='M')

pd.date_range('2012-04-10','2012-06-01',  #指定长度
              freq='5D'  # 指定频率(P314) 5D代表5天
              )
Out[18]: 
DatetimeIndex(['2012-04-10', '2012-04-15', '2012-04-20', '2012-04-25',
               '2012-04-30', '2012-05-05', '2012-05-10', '2012-05-15',
               '2012-05-20', '2012-05-25', '2012-05-30'],
              dtype='datetime64[ns]', freq='5D')

pd.date_range('2012-04-10','2012-04-11',  #指定长度
              freq='2H30min'  # 指定频率(P314) 2H30min代表2.5小时
              )
Out[19]: 
DatetimeIndex(['2012-04-10 00:00:00', '2012-04-10 02:30:00',
               '2012-04-10 05:00:00', '2012-04-10 07:30:00',
               '2012-04-10 10:00:00', '2012-04-10 12:30:00',
               '2012-04-10 15:00:00', '2012-04-10 17:30:00',
               '2012-04-10 20:00:00', '2012-04-10 22:30:00'],
              dtype='datetime64[ns]', freq='150T')

pd.date_range('2012-04-10 12:56:31',
              periods=8,  # 指定长度
              freq='2D'  # 指定频率
              )
Out[20]: 
DatetimeIndex(['2012-04-10 12:56:31', '2012-04-12 12:56:31',
               '2012-04-14 12:56:31', '2012-04-16 12:56:31',
               '2012-04-18 12:56:31', '2012-04-20 12:56:31',
               '2012-04-22 12:56:31', '2012-04-24 12:56:31'],
              dtype='datetime64[ns]', freq='2D')

pd.date_range('2012-04-10 12:56:31',
              periods=8,  # 指定长度
              freq='2D',  # 指定频率
              normalize=True  # 生成零点时间戳
              )
Out[21]: 
DatetimeIndex(['2012-04-10', '2012-04-12', '2012-04-14', '2012-04-16',
               '2012-04-18', '2012-04-20', '2012-04-22', '2012-04-24'],
              dtype='datetime64[ns]', freq='2D')

pd.date_range('20120101','20120901',freq='WOM-3FRI')  # 返回每个月的第三个星期五
Out[22]: 
DatetimeIndex(['2012-01-20', '2012-02-17', '2012-03-16', '2012-04-20',
               '2012-05-18', '2012-06-15', '2012-07-20', '2012-08-17'],
              dtype='datetime64[ns]', freq='WOM-3FRI')
  • 字符串列表转DateTimeIndex
datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']
pd.to_datetime(datestrs)
Out[23]: DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)

时间戳索引操作

  • 生成时间序列
pd.Series(np.random.randn(5),index=pd.date_range('1/1/2000', periods=5)) 
Out[25]: 
2000-01-01    0.782208
2000-01-02    2.133112
2000-01-03   -0.705192
2000-01-04    0.333761
2000-01-05   -0.605273
Freq: D, dtype: float64
  • DatetimeIndex整数索引的结果为Timestamp对象
pd.date_range('20120101','20120901',freq='WOM-3FRI')[0]
Out[26]: Timestamp('2012-01-20 00:00:00', freq='WOM-3FRI')
  • is_unique
pd.date_range('20120101','20120901',freq='WOM-3FRI').is_unique
Out[27]: True
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值