使用 pandas 中的 Timestamp 中的 floor() 处理时间
Pandas Timestamp.floor()
将新的时间戳返回到此分辨率,将所需的时间序列频率作为输入。
ts = pd.Timestamp(year=2011, month=11, day=21, hour=10, second=49, tz='US/Central') print(ts) --》 2011-11-21 10:00:49-06:00 print(ts.floor(freq='D')) --》 2011-11-21 00:00:00-06:00 print(ts.floor(freq="T")) --》 2011-11-21 10:00:00-06:00 print(ts.floor(freq="min")) --》 2011-11-21 10:00:00-06:00 print(ts.floor(freq="min")) --》 2011-11-21 10:01:00-06:00 print(ts.floor(freq="min")) --》 2011-11-21 10:01:00-06:00
freq='D':以天为频率,'T':以分钟为频率,'min':与 T 的效果一致
ceil() 和 round() 的用法类似,区别和math中的 ceil() 和 round() 类似
使用pandas处理时间,Timestamp(时间戳)是pandas继承自datetime.datetime的类。专门处理DataFrame中关于时间的类型。时间戳由date(日期)和time(时间组成);日期year,month和day组成;时间由hour、minute和second组成。
timedelta在pandas中表示时间间隔,也就是时间差,是两个时间之间差值,可以是几年,几个月或者几天,也可以是几小时之类的时间。因为是时间差,因此既可以是正数,也可以是负数。
将字符串转化为时间戳格式,这是所有时间类处理的第一步;
时间戳属性:
将时间戳转为需要格式的方法:
时间间隔计算:继承datetime.timedelta类,计算结果返回的是一个timedelta类型。
时间间隔的函数主要是对时间间隔计算,转换为标准格式,求总秒数等基础运算。
上面都是对单个对象的处理,对pandas的整列数据(Series)处理,需要用 dt 属性借口。(提供了cat、dt、str 三种属性接口),dt 的属性跟之前的时间戳没有区别。
时间加减操作;主要是在加减时,要把int转为timedelta对象才能正常的计算结果;
# 加一天并只显示日期
data['加一天'] = data['时间'].dt.date+pd.to_timedelta(1, unit='D')
# 加一小时
data['加一小时'] = data['时间']+pd.to_timedelta(1, unit='h')
Pandas 生成 TimeStamp 数据:
pandas.to_datetime(['20221001010000']) -> 2022-10-01 01:00:00
或
pandas.to_datetime({'year': [2015] * num, 'month': [9] * num, 'day': [4, 5, 6], 'hour': [0, 1, 2]})
key值不能变,否则无法识别,value值数量要一致
参考:Python Pandas Timestamp.floor用法及代码示例 - 纯净天空
干货|python办公自动化(一)—数据处理之Pandas时间处理(一篇读懂时间) - 知乎