时间类型数据的转换(字符串转为时间)
pd.to_datetime(arg, errors=\'raise\', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin=\'unix\')
- arg:表示想要转换的数据,无默认。
- format:%Y表示年份,%m表示月,%d表示天,%H表示小时,%M表示分钟,%S表示秒。
- 在格式化的时候,需要配合实际的分隔符,例如“2012/12*5 00/00:00”,此时format = "%Y/%m*%d %H/%M:%S"。
import pandas as pd # data为已导入的表格 data[\'发生时间\'] = pd.to_datetime(data[\'发生时间\'],format=\'%Y%m%d%H%M%S\') data[\'发生时间\'].head()
注:如果dtype为datetime64则说明转换成功,可继续后续操作。
时间数据内部信息提取
| 属性名称 | 属性解释 | 属性名称 | 属性解释 |
|---|---|---|---|
| year | 年 | week | 一年中第几周 |
| month | 月 | quarter | 季节 |
| day | 日 | weekofyear | 一年中第几周 |
| hour | 小时 | dayofyear | 一年中的第几天 |
| minute | 分钟 | dayofweek | 一周第几天 |
| second | 秒 | weekday | 一周第几天 |
| date() | 日期 | weekday_name | 星期名称 |
| time() | 时间 | is_leap_year | 是否闰年 |
data[\'年份\'] = [i.year for i in data[\'发生时间\']] data[\'月份\'] = [i.month for i in data[\'发生时间\']] data[\'日期\'] = [i.day for i in data[\'发生时间\']] data[\'小时\'] = [i.hour for i in data[\'发生时间\']] data[\'分钟\'] = [i.minute for i in data[\'发生时间\']] data[\'秒\'] = [i.second for i in data[\'发生时间\']] data[\'星期\'] = [i.dayofweek for i in data[\'发生时间\']] ## 注意第几天从0开始 data[\'星期\'] = [i.weekday for i in data[\'发生时间\']] data[\'日期\'] = [i.date() for i in data[\'发生时间\']] ## 提取日期是方法,不是属性(需要加上()) data[\'时间\'] = [i.time() for i in data[\'发生时间\']] ## 提取时间是方法,不是属性(需要加上()) data[\'季节\'] = [i.quarter for i in data[\'发生时间\']] ## 季节从1开始,至4结束 data[\'第几周\'] = [i.week for i in data[\'发生时间\']] data[\'第几天\'] = [i.dayofyear for i in data[\'发生时间\']] data[\'week\'] = [i.weekday_name for i in data[\'发生时间\']] data[\'是否闰年\'] = [i.is_leap_year for i in data[\'发生时间\']]
函数Timedelta(例如多少秒)
Timedelta实际上也是时间数据(即datetime)相减之后的类型。
data[\'发生时间\'].min() - data[\'发生时间\'].max()
Timedelta(\'-23 days +07:19:17\')
pd.Timedelta(**args)
| 周期名称 | 单位 | 解释 | 周期名称 | 单位 | 解释 |
|---|---|---|---|---|---|
| weeks | 无 | 星期 | seconds | s | 秒 |
| days | D | 天 | milliseconds | ms | 毫秒 |
| hours | h | 小时 | microseconds | us | 微秒 |
| minutes | m | 分 | nanoseconds | ns | 纳秒 |
# 先输出参照时间 data[\'发生时间\'].min()
Timestamp(\'2014-10-19 06:39:17\')
# 不足之处为:这里默认十月只有30天 data[\'发生时间\'].min() + pd.Timedelta(days = 23)
Timestamp(\'2014-11-11 06:39:17\')
data[\'发生时间\'].min() + pd.Timedelta(weeks = 23)
Timestamp(\'2015-03-29 06:39:17\')
data[\'发生时间\'].min() + pd.Timedelta(microseconds = 23)
Timestamp(\'2014-10-19 06:39:17.000023\')