datetime和pandas之间的Unix Epoche值不匹配

问题描述 投票:0回答:1

我将没有时区信息的日期时间对象存储在熊猫数据框中。检索时间戳信息时,时间戳与从原始datetime对象获得的时间戳相比有所不同。

import pandas as pd
from datetime import datetime

dt = datetime.now()
print(dt)
print(dt.timestamp())

df = pd.DataFrame(data=[(dt)],columns=["date"])
print(df)

epoche_from_pandas = df.date.apply(lambda x: x.timestamp()).values[0]
print(epoche_from_pandas)

打印熊猫数据框显示相同的日期时间字符串,但纪元值不同。两个时间戳都偏移了3600秒,这相当于我的本地时区差(+1小时)。

2020-03-20 01:05:05.457290

1584662705.45729

2020-03-20 01:05:05.457290

1584666305.45729

[我的假设是,pandas使用其自己的内部表示形式而忽略了纪元值(可能使用年,月,日,小时...组成部分),并以unix时间(未本地化)打印。这意味着虽然两个打印语句都产生相同的字符串,但大熊猫时间实际上比前面大1小时,因为它反映的是通常落后1小时的unix。

以上是否正确?

python pandas datetime epoch
1个回答
0
投票

从技术上讲,这还不是解决问题的方法,但是我发现了一段更清晰的代码,似乎可以再现该问题:

from datetime import datetime

import pandas as pd

dt = datetime.now()
print(f"dt: {dt}")
print(f"dt timestamp: {dt.timestamp()}\n")

pd_ts = pd.Timestamp(dt)
print(f"pd Ts: {pd_ts}")
print(f"pd Ts .timestamp(): {pd_ts.timestamp()}")
© www.soinside.com 2019 - 2024. All rights reserved.