【发布时间】:2021-05-08 23:54:32
【问题描述】:
我正在尝试将pandas.Timestamp 转换为内置的python datetime。我尝试了以下方法:
pandas_time = pd.Timestamp(year=2020, day=4, month=2, hour=0, minute=0, second=1)
pandas_ts = pandas_time.timestamp()
datetime_time = datetime.datetime.fromtimestamp(pandas_ts)
datetime_ts = datetime_time.timestamp()
查看变量可以得出:
pandas_time: 2020-02-04 00:00:01
datetime_time: 2020-02-04 01:00:01
pandas_ts: 1580774401.0
datetime_ts: 1580774401.0
所以它们都有相同的时间戳,但日期相差一小时。 当我反过来尝试时,我得到了这个:
datetime_time = datetime.datetime(year=2020, day=4, month=2, hour=0, minute=0, second=1)
datetime_ts = datetime_time.timestamp()
pandas_time = pd.Timestamp(datetime_time)
pandas_ts = pandas_time.timestamp()
pandas_time: 2020-02-04 00:00:01
datetime_time: 2020-02-04 00:00:01
pandas_ts: 1580774401.0
datetime_ts: 1580770801.0
现在日期相同,但时间戳相差 3600(1 小时)。
我确实知道我可以使用 pandas to_pydatetime 将 pandas Timestamp 转换为 python datetime 但我想知道为什么会出现这种差异。他们的起点定义不同吗?如果是这样,为什么?
【问题讨论】:
-
简单但重要的区别:pandas Timestamp 默认为 UTC,Python datetime 默认为本地时间。请注意,Unix 时间始终(应该)参考 UTC,所以这就是您观察差异的原因。
标签: python pandas datetime timestamp