可重现的示例:
import pandas as pd
now = pd.Timestamp('2018-04-09 09:10')
start_of_today = pd.datetime(now.year, now.month, now.day, 0)
print(pd.to_datetime(start_of_today.timestamp(), unit='s'))
最后一行将返回 2018-04-08 22:00:00 而不是 2018-04-09 00:00,为什么会发生这种情况?
最佳答案
根据datetime.timestamp
documentation :
For aware datetime instances, the return value is computed as:
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
因此,您需要将 pd.datetime
对象与 UTC 时区对齐:
from datetime import timezone
import pandas as pd
now = pd.Timestamp('2018-04-09 09:10')
start_of_today = pd.datetime(now.year, now.month, now.day, 0, 0, 0, 0, timezone.utc)
print(pd.to_datetime(start_of_today.timestamp(), unit='s'))
关于python - pandas 日期时间转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770856/