
Pandas 提供了一个特殊的 Timestamp 对象,用于表示日期和时间。Timestamp 是 Pandas 中用于处理时间序列数据的核心数据类型,它基于 Python 的 datetime 模块,但提供了更多的功能和更好的性能。
| 解释 | 输入 | 输出 |
|---|---|---|
使用 python 的 import datetime 库,至少需要年月日 |
pd.Timestamp(datetime.datetime(2020, 6, 8)) |
Timestamp('2020-06-08 00:00:00') |
| 指定是时分秒 | pd.Timestamp(datetime.datetime(2020, 6, 8, 16, 17, 18)) |
Timestamp('2020-06-08 16:17:18') |
| 指定时间字符串 | pd.Timestamp('2012-05-01') |
Timestamp('2012-05-01 00:00:00') |
| 指定时间字符串 | pd.Timestamp('2017-01-01T12') |
Timestamp('2017-01-01 12:00:00') |
| 依次定义 year, month, day,hour, minute, second, microsecond: | pd.Timestamp(2012, 5, 1) |
Timestamp('2012-05-01 00:00:00') |
| 依次定义 year, month, day,hour, minute, second, microsecond: | pd.Timestamp(2017, 1, 1, 12) |
Timestamp('2017-01-01 12:00:00') |
| 直接定义 year, month, day,hour, minute, second, microsecond: | pd.Timestamp(year=2017, month=1, day=1, hour=12) |
Timestamp('2017-01-01 12:00:00') |
| 解析时间戳 | pd.Timestamp(1513393355.5, unit='s') # 单位为秒 |
Timestamp('2017-12-16 03:02:35.500000') |
| 指定时区 | pd.Timestamp(1513393355, unit='s', tz='US/Pacific') |
Timestamp('2017-12-15 19:02:35-0800', tz='US/Pacific') |
| 指定为北京时间 | pd.Timestamp(1513393355, unit='s', tz='Asia/Shanghai') |
Timestamp('2017-12-16 11:02:35+0800', tz='Asia/Shanghai') |
| 今天日期 | pd.Timestamp('today') |
Timestamp('2020-06-09 16:11:56.532981') |
| 现在 | pd.Timestamp('now') |
Timestamp('2020-06-09 16:11:56.532981') |
| 只取日期 | pd.Timestamp('today').date() |
datetime.date(2022, 4, 16) |
| 年份 | ||
| 算出昨天 | pd.Timestamp('now')-pd.Timedelta(days=1) |
Timestamp('2020-06-08 16:14:39.254365') |
| 算出明天 | pd.Timestamp('now')+pd.Timedelta(days=1) |
Timestamp('2020-06-10 16:15:28.019039') |
| 当月初,一日 | pd.Timestamp('now').replace(day=1) |
Timestamp('2020-06-01 16:15:28.019039') |
| 时间限制,纳秒粒度,64位整数(大约584年) | pd.Timestamp.min |
Timestamp('1677-09-21 00:12:43.145225') |
| 时间限制,纳秒粒度,64位整数(大约584年) | pd.Timestamp.max |
Timestamp('2262-04-11 23:47:16.854775807') |
import numpy as npimport pandas as pdtime = pd.Timestamp('now')Timestamp('2020-06-09 16:30:54.813664')
| 中文 | 属性 | 输出 |
|---|---|---|
| 返回 numpy datetime64格式(以纳秒为单位)。 | time.asm8 | numpy.datetime64(‘2020-06-09T16:30:54.813664000’) |
| 周几,周一为0 | time.dayofweek | 1 |
| 周几,周一为0 | time.day_of_week | |
| 一年的第几天 | time.dayofyear | 161 |
| 一年的第几天 | time.day_of_year | 161 |
| 当月有多少天 | time.days_in_month | 30 |
| 当月有多少天 | time.daysinmonth | 30 |
| 周期字符 | time.freqstr | None |
| 是否闰年,公历的 | time.is_leap_year | True |
| 是否当月最后一天 | time.is_month_end | False |
| 是否当月第一天 | time.is_month_start | False |
| 是否当季最后一天 | time.is_quarter_end | False |
| 是否当季第一天 | time.is_quarter_start | False |
| 是否当年最后一天 | time.is_year_end | False |
| 是否当年第一天 | time.is_year_start | False |
| 当前季度数 | time.quarter | 2 |
| 当前时区别名 | time.tz | None |
| 当年第几周 | time.week | 24 |
| 当年第几周 | time.weekofyear | 24 |
| 年 | time.year | 2020 |
| 月 | time.month | 6 |
| 日 | time.day | 9 |
| 小时 | time.hour | 16 |
| 分钟 | time.minute | 46 |
| 秒 | time.second | 59 |
| time.fold | 0 | |
| 频度周期 | time.freq | None |
| time.microsecond | 890462 | |
| time.nanosecond | 0 | |
| time.tzinfo | None | |
| time.value | 1591721219890462000 |
time = pd.Timestamp('now', tz='Asia/Shanghai')## Timestamp('2020-06-09 16:55:58.027896+0800', tz='Asia/Shanghai')
| 中文 | 属性 | 输出 |
|---|---|---|
| 转换为指定时区 | time.astimezone('UTC') |
Timestamp('2020-06-09 08:55:58.027896+0000', tz='UTC') |
| 转换单位,向上舍入,转为以秒为单位 | time.ceil('s') |
Timestamp('2020-06-09 16:55:59+0800', tz='Asia/Shanghai') |
| 转为以纳秒为单位 | time.ceil('ns') |
|
| 保留日 | time.ceil('d') |
|
| 保留时 | time.ceil('h') |
|
| 转换单位, 为向下舍入,保留时 | time.floor('h') |
Timestamp('2020-06-09 17:00:00+0800', tz='Asia/Shanghai') |
| 类似四舍五入,保留时 | time.round('h') |
|
| 返回星期名 | time.day_name() |
'Tuesday' |
| 月份名称 | time.month_name() |
'June' |
| 将时间戳规范化为午夜,保留tz信息。 | time.normalize() |
Timestamp('2020-06-09 00:00:00+0800', tz='Asia/Shanghai') |
| 时间元素替换 datetime.replace,年份换为2019年,可处理纳秒。 | time.replace(year=2019) |
Timestamp('2019-06-09 17:14:44.126817+0800', tz='Asia/Shanghai') |
| 月份换为8月 | time.replace(month=8) |
Timestamp('2020-08-09 17:14:44.126817+0800', tz='Asia/Shanghai') |
| 转为周期类型,将丢失时区,周期为小时 | time.to_period(freq='h') |
Period('2020-06-09 17:00', 'H') |
| 转为指定时区,转为 utc 时间 | time.tz_convert('UTC') |
Timestamp('2020-06-09 09:14:44.126817+0000', tz='UTC') |
| 本地化时区转换 | time = pd.Timestamp('now') |
Timestamp('2020-06-09 17:32:47.388726+0800', tz='Asia/Shanghai') |
| 本地化时区转换 | time.tz_localize('Asia/Shanghai') |
Timestamp('2020-06-09 17:32:47.388726+0800', tz='Asia/Shanghai') |
| 删除时区 | time.tz_localize(None) |