目录
时间戳
时间戳构造
import pandas as pd
pd.Timestamp('2023/02/10')
输出:
Timestamp('2023-02-10 00:00:00')
t = pd.Timestamp('2023/02/10 09:10:20')
(t.year,t.day,t.month,t.hour,t.minute,t.second)
输出:
(2023, 10, 2, 9, 10, 20)
时间戳序列生成
pd.date_range(start,end,freq,periods)
使用pd.date_range() 可以生成连续时间间隔的时间戳序列。参数有start,end,freq和periods,分别代表起始时间,终止时间,时间间隔,时间戳个数。
date = pd.date_range('2023/02/01','2023/02/10',freq='2d')
date
输出:
DatetimeIndex(['2023-02-01', '2023-02-03', '2023-02-05', '2023-02-07', '2023-02-09'], dtype='datetime64[ns]', freq='2D')
pd.to_datetime()
使用pd.to_datetime()生成时间戳。能把一列时间戳格式对象转化为datetime64类型的时间戳序列。参数详解:https://philosophy.blog.csdn.net/article/details/124846876?spm=1001.2014.3001.5502
date = pd.to_datetime(['2023-02-01', '2023-02-03', '2023-02-05', '2023-02-07',
'2023-02-09'])
输出:同上
时间戳序列的索引与切片
使用布尔条件获取时间戳子序列
df = pd.DataFrame({'time':['2023-02-01', '2023-02-03', '2023-02-05', '2023-02-07',
'2023-02-09'],'number':range(1,6)})
df[df.time < pd.Timestamp('2023-02-05')]
df[df.time < '2023-02-05'] #获取时间小于于2023-02-05时间戳的数据
输出
使用 索引切片获取时间戳子序列
df1 = df.set_index('time',drop=False) #设置时间戳索引
df1.loc['2023-02-01':'2023-02-04',:] #切片
输出:
使用dt对象获取时间戳子序列;dt对象详解
获取每个月第一天日期的数据
#使用dt对象获取时间戳子序列
idx = pd.Series(df1.index).dt #获取时间戳的dt对象
df1[idx.is_month_start.values]
输出:
时间差
时间差由两个时间戳相减得出
pd.Timestamp('20230213')-pd.Timestamp('20230211')
输出:
Timedelta('2 days 00:00:00')
时间差生成
时间单位参数有weeks、days、hours、minutes、seconds、milliseconds、microseconds、nanoseconds.
pd.Timedelta(days=1,minutes=25)
输出:
Timedelta('1 days 00:25:00')
生成时间差序列
和date_range()用法相似
pd.timedelta_range('1 days',periods=5) #生成连续5个时间差
输出:
TimedeltaIndex(['1 days', '2 days', '3 days', '4 days', '5 days'], dtype='timedelta64[ns]', freq='D')
pd.to_timedelta()支持时间差序列转换,类型为timedelta64[ns]
补充
时间差序列支持与标量乘法运算、与时间差加减法和除法运算、与时间戳加减法运算。