熊猫时间戳和日期时间的区别

时间:2021-02-04 16:27:29

标签: python pandas datetime timestamp

我正在修补将 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,但我想知道为什么会出现这种差异。他们的起点是否有不同的定义?如果是这样,为什么?

1 个答案:

答案 0 :(得分:3)

如果您查看 DIFXAPP: WARNING:No device Ids found in INF 'C:\Windows\System32\DriverStore\FileRepository\fd.inf_amd64_95b7c55f67471298\fd.inf' for current platform. DIFXAPP: INFO: RETURN: DriverPackageInstallW (0xE0000301) 文档,它是为 datetime

编写的 <块引用>

classmethod date.fromtimestamp(timestamp) 返回POSIX时间戳对应的本地日期,如time.time()返回。

所以它返回.fromtimestamp(timestamp)。而已。所以你需要告诉它显式使用 local dateutc 默认使用 utc。

pandas

第二种情况类似

pandas_time = pd.Timestamp(year=2020, month=2, day=4,  hour=0, minute=0, second=1)
pandas_ts = pandas_time.timestamp()
datetime_time = datetime.datetime.fromtimestamp(pandas_ts, tz=timezone.utc)
datetime_ts = datetime_time.timestamp()

从您的问题来看,您似乎生活在 UTC+1 国家/地区:p