python时间处理 时间序列 备查

2020-11-10  本文已影响0人  jinghenggl

时间索引

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')
上一篇下一篇

猜你喜欢

热点阅读