加载pandas和numpy库:
1 | import pandas as pd |
一、时间点Timestamp
Timestamp是从Python标准库的datetime类继承过来的,表示时间轴上的一个时刻。它提供了方便的时区转换功能。
调用Timestamp.now()获取当前时间,但注意的是,它是不包含时区信息的本地时间。
1 | now=pd.Timestamp.now() |
代码结果:
代码结果:
1 | Timestamp('2018-03-17 22:15:15.504010') |
调用.tz_localize()转换为指定时区的当前时间
下面的+0800表示东八区的时间
1 | now_shanghai=now.tz_localize("Asia/Shanghai") |
代码结果:
1 | Timestamp('2018-03-17 22:15:15.504010+0800', tz='Asia/Shanghai') |
1 | import pytz |
代码结果:
代码结果:
1 | ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 。。。 |
调用Timestamp()创建任意时间点:
1 | pd.Timestamp('2018-03-16 21:01:34') |
代码结果:
1 | Timestamp('2018-03-16 21:01:34') |
二、时间段Period
Period表示一个标准的时间段。例如某年、某月、某日、某小时等。时间的长短由freq决定。
调用pd.Period.now()获得包含当前时间的时间段:
1 | now_day=pd.Period.now(freq="D") |
代码结果:
1 | Period('2018-03-16', 'D') |
1 | now_hour=pd.Period.now(freq="H") |
代码结果:
1 | Period('2018-03-16 21:00', 'H') |
获取freq的选值
1 | pandas.tseries.frequencies._period_code_map.keys() |
代码结果:
1 | dict_keys(['A-DEC', 'A-JAN', 'A-FEB', 'A-MAR', 'A-APR', 'A-MAY', 'A-JUN', 'A-JUL', 'A-AUG', 'A-SEP', 'A-OCT', 'A-NOV', 'Q-DEC', 'Q-JAN', 'Q-FEB', 'Q-MAR', 'Q-APR', 'Q-MAY', 'Q-JUN', 'Q-JUL', 'Q-AUG', 'Q-SEP', 'Q-OCT', 'Q-NOV', 'M', 'W-SUN', 'W-MON', 'W-TUE', 'W-WED', 'W-THU', 'W-FRI', 'W-SAT', 'B', 'D', 'H', 'T', 'S', 'L', 'U', 'N', 'Q', 'A', 'W', 'C']) |
获取Period对象的终点和起点
1 | now_day.start_time |
代码结果:
1 | Timestamp('2018-03-16 00:00:00') |
1 | now_day.end_time |
代码结果:
1 | Timestamp('2018-03-16 23:59:59.999999999') |
三、时间间隔Timedetla
通过调用pd.Timedelta()之间创建时间间隔Timedelta对象:
1 | td=pd.Timedelta(weeks=2,days=10,hours=12,minutes=2.4,seconds=10.3) |
代码结果:
1 | Timedelta('24 days 12:02:34.300000') |
Timedelta对象有属性:weeks、days、seconds、milliseconds、microseconds和nanoseconds等:
1 | print(td.days) |
代码结果:
1 | 24 |
四、三者之间的转换
调用Timestamp对象的to_period()方法将时间点转换为包含该时间点的时间段:
1 | now.to_period("H") |
代码结果:
1 | Period('2018-03-16 21:00', 'H') |
将两个时间点相减得到时间间隔Timedelta对象:
1 | nation_day=pd.Timestamp("2018-10-1") |
代码结果:
1 | Timedelta('198 days 02:13:36.767126') |
时间点和时间间隔之间可以进行加减运算:
1 | nation_day+pd.Timedelta("20 days 10:20:30") |
代码结果:
1 | Timestamp('2018-10-21 10:20:30') |