from datetime import datetime
#返回当前时刻的日期和时间
datetime.now()
#datetime.datetime(2020, 5, 16, 14, 13, 37, 179143),日期、时间一起显示
# 年 月 日 时 分 秒 微妙 可通过属性取出来每个部分
#返回当前时刻的年
datetime.now().year
#2020
#返回当前时刻的月
datetime.now().month
#5
#返回当前时刻的日
datetime.now().day
#16
与当前时刻的周相关的数据有两个,一个是当前时刻是一周中的周几;一个是返回当前时刻所在的周在全年的周里面是第几周。
weekday():
'''
功能: 当前时刻是一周中的**周几**。
参数:
返回值: 数字(表示周几)
'''
注意:Python中周几是从0开始数的(例:周日返回6,所以得在后面+1)
from datetime import datetime
datetime.now().weekday()+1
isocalendar():
'''
功能: 前时刻所在的周在**全年的周里面是第几周**。
参数:
返回值: 元组(年,第几周,日)
'''
注意:返回的是一个元组,含年、第几周、日,所以取第几周时加上索引值[1]
from datetime import datetime
datetime.now().isocalendar()[1]
使用 now() 函数日期和时间都会显示出来,但有时我们想单独看日期,单独看时间,或者自定义日期和时间显示格式,这时就需要用到 day()、time()、strftime() 函数。
from datetime import datetime
datetime.now().date()
from datetime import datetime
datetime.now().time()
datetime.now().strftime("%Y-%m-%d")
datetime.now().strftime("Y-%m-%d %H:%M:%S")
from datetime import datetime
datetime(2020,5,19,9,46) #自己手动指定了年、月、日、时、分
now = datetime.now()
str(now)
type( str(now) )
str_name = "2020-5-16"
from dateutil.parser import parse #得导入一个包
parse(str_name)
type( parse(str_name) )
时间索引就是根据时间来对时间格式的字段进行数据选取的一种索引方式。 Python中可以选取具体的某一时间对应的值,也可以选某一段时间内的值。 新建一个时间索引的 DataFrame,如下:
import pandas as pd
import numpy as np
#单独创建时间行索引
index = pd.DatetimeIndex(['2020-5-19','2020-5-20','2020-5-21','2020-5-22'])
#创建一个以时间为行索引,数据从1到4的 DataFrame 表格型数据。
data = pd.DataFrame(np.arange(1,5),columns=["数字"],index=index)
#ValueError: Shape of passed values is (1, 10), indices imply (1, 4) 注意索引个数和数据相同
#查看整个数据
data
#获取2020年数据
data['2020']
#获取2020年5月的数据
data['2020-5']
#获取2020年5月19日到2020年5月21日的数据
data['2020-5-19':'2020-5-21']
#获取2020年5月20日的数据
data['2020-5-20':'2020-5-20']
上述的索引方法适用于索引是时间的情况下,但是并不是所有情况下时间都可以做索引,比如订单表中订单号是索引,成交时间只是一个普通列,这时想选取某一段时间内的成交订单怎么办? 因为时间也是有大小关系的,所以可通过索引方式中的布尔索引来对非索引列的时间进行选取。
import pandas as pd
from datetime import datetime
df = pd.DataFrame({"客户姓名":["初见","思齐","小淘","齐齐"],"唯一标识码":[99,100,101,102],"年龄":[18,19,20,21],"成交时间":['2020-5-19','2020-5-20','2020-5-21','2020-5-22']},index=["A1","A2","A3","A4"])
#选取成交时间为2020-5-20的订单
df[df["成交时间"] == datetime(2020,5,20) ]
#选取成交时间为2020-5-20以后的订单
df[df["成交时间"] > datetime(2020,5,20) ]
#选取成交时间为2020-5-20以前的订单
df[df["成交时间"] < datetime(2020,5,20) ]
#选取成交时间为2020-5-20到2020-5-22之间的订单
df[(df["成交时间"] > datetime(2020,5,20)) & (df["成交时间"] < datetime(2020,5,22)) ]
#具体形式如此,这个的成交时间是对象不好使
经常会用到计算两个时间的差,比如一个用户在某一平台上的生命周期(即用最后一次登录时间 - 首次登陆时间) Python中两个时间做差会返回一个 timedelta 对象,该对象包含天数、秒、微秒三个等级,若是要获取小时、分钟,则需要进行换算。
import datetime import datetime
cha = datetime(2020,5,19,9,46) - datetime(2020,5,18,7,0) #手动输入了年月日时分
#返回 datetime.timedelta(days=1, seconds=9960) 无论是差了几年等,都只会返回天数、秒、微秒这三 个等级,这块微妙我没具体指明,所以没有。
#因为timedelta 对象包含天数、秒、微秒这三个等级,所以可通过属性获取出来
cha.days #获取天数的时间差
#1
cha.seconds #获取秒的时间差
#9960
cha.seconds/3600 #将秒换算成小时的时间差
#2.7666666666666666
时间偏移指给时间往前推或往后推一段时间(即加减一段时间)。 Python中实现时间偏移的方式有两种: 第一种借助 timedelta(该对象包含天数、秒、微秒三个等级,所以只能偏移天数、秒、微秒单位的时间) 第二种是用Pandas中的日期偏移量(date offset)
timedelta只支持 天、秒、微妙 单位的时间运算,若是其他单位的时间运算,则需要换算成天、秒、微妙三种单位的一种方可进行偏移。
from datetime import timedelta
date = datetime(2020, 5, 19, 10, 42)
#往后推一天
date + timedelta(days = 1)
#往后推10秒
date + timedelta(seconds = 10)
date offset 可直接实现天、小时、分钟单位的时间偏移,不需要换算,相比timedelta更方便。
from pandas.tseries.offsets import Day,Hour,Minute
'''
功能:时间偏移
返回值:时间戳
'''
date = datetime(2020, 5, 19, 10, 42)
#往后推一天
date + Day(1)
#Timestamp('2020-05-21 10:42:00'),返回的是时间戳
#往后推一小时
date + Hour(1)
#Timestamp('2020-05-20 11:42:00')
#往后推10分钟
date + Minute(10)
#Timestamp('2020-05-20 10:52:00')
#往前推就是减
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有