gpt4 book ai didi

python - pandas datetime 和 datetime datetime 之间的区别

转载 作者:行者123 更新时间:2023-12-04 09:34:52 32 4
gpt4 key购买 nike

您好,我有一些 datetime.datetime 格式的日期,我用它们来过滤带有 Pandas 时间戳的 Pandas 数据框。我刚刚尝试了以下方法并获得了 2 小时的偏移量:

from datetime import datetime
import pandas as pd
pd.to_datetime(datetime(2020, 5, 11, 0, 0, 0).timestamp()*1e9)

输出是:

->Timestamp('2020-05-10 22:00:00')

谁能解释为什么这会产生 2 小时的偏移量?我在丹麦,所以它对应于格林威治标准时间的偏移量。是这个原因吗。我当然可以只增加 2 小时,但想了解为什么将来要使脚本更健壮。

感谢你的帮助,杰斯珀

最佳答案

pd.to_datetime 接受一个 datetime 对象,所以你可以这样做(pandas 假定 UTC):

pd.to_datetime(datetime(2020, 5, 11))

转换为时间戳时,您将获得 2 小时的偏移量,因为默认情况下 python 的 datetime 不知道时区,并且会给您一个“天真的” datetime 对象(文档在这里:https://docs.python.org/3/library/datetime.html#aware-and-naive-objects)。生成的时间戳将在本地时区,因此有 2 小时的偏移量。

您可以将 tzinfo 参数传递给 datetime 对象,指定时间应被视为 UTC:

from datetime import datetime
import pandas as pd
import pytz

pd.to_datetime(datetime(2020, 5, 11, 0, 0, 0, tzinfo=pytz.UTC).timestamp()*1e9)

或者,您可以使用 calendar 模块生成 UTC 时间戳:

from datetime import datetime
import pandas as pd
import calendar

timestamp = calendar.timegm(datetime(2020, 5, 11, 0, 0, 0).utctimetuple())
pd.to_datetime(timestamp*1e9)

关于python - pandas datetime 和 datetime datetime 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62638074/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com