时间索引
df.index = pd.DatetimeIndex(df.index)
时间只保留日期
df['date'] = df['time'].dt.date
将指定字段格式化为时间类型
df["date"] = pd.to_datetime(df['时间'])
转化为北京时间
df['time'] = df['time'].dt.tz_convert('Asia/Shanghai')
转为指定格式,可能会失去秒以后的精度
df['time'] = df['time'].dt.strftime("%Y-%m-%d %H:%M:%S")
dc.index = pd.to_datetime(dc.index, format='%Y%m%d', errors='ignore')
时间,参与运算
pd.DateOffset(days=2)
当前时间
pd.Timestamp.now()
pd.to_datetime('today')
判断时间是否当天
pd.datetime.today().year == df.start_work.dt.year
df.time.astype('datetime64[ns]').dt.date == pd.to_datetime('today')
定义个天数
import datetime
days = lambda x: datetime.timedelta(days=x)
days(2)
同上,直接用 pd 包装的
pd.Timedelta(days=2)
unix 时间戳
pd.to_datetime(ted.film_date, unit='ms')
按月(YMDHminS)采集合计数据
df.set_index('date').resample('M')['quantity'].sum()
df.set_index('date').groupby('name')['ext price'].resample("M").sum()
按天汇总,index 是 datetime 时间类型
df.groupby(by=df.index.date).agg({'uu':'count'})
按周汇总
df.groupby(by=df.index.weekday).uu.count()
按月进行汇总
df.groupby(['name', pd.Grouper(key='date', freq='M')])['ext price'].sum()
按月进行汇总
df.groupby(pd.Grouper(key='day', freq='1M')).sum()
按照年度,且截止到12月最后一天统计 ext price 的 sum 值
df.groupby(['name', pd.Grouper(key='date', freq='A-DEC')])['ext price'].sum()
按月的平均重新采样
df['Close'].resample('M').mean()
取时间范围,并取工作日
rng = pd.date_range(start="6/1/2016",end="6/30/2016",freq='B')
重新定时数据频度,按一定补充方法
df.asfreq('D', method='pad')
# 时区,df.tz_convert('Europe/Berlin')
df.time.tz_localize(tz='Asia/Shanghai')
转北京时间
df['Time'] = df['Time'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
查看所有时区
from pytz import all_timezones
print (all_timezones)
时长,多久,两个时间间隔时间,时差
df['duration'] = pd.to_datetime(df['end']) - pd.to_datetime(df['begin'])
指定时间进行对比
df.Time.astype('datetime64[ns]') < pd.to_datetime('2019-12-11 20:00:00', format='%Y-%m-%d %H:%M:%S')