2 回答

TA貢獻1789條經(jīng)驗 獲得超10個贊
pd.to_datetime接受一個datetime對象,所以你可以這樣做(熊貓假設(shè) UTC):
pd.to_datetime(datetime(2020, 5, 11))
轉(zhuǎn)換為時間戳?xí)r你會得到 2 小時的偏移量,因為默認(rèn)情況下 pythondatetime不知道時區(qū)并且會給你一個“天真的”datetime對象(文檔在這里:https://docs.python.org/3/library/datetime。 html#aware-and-naive-objects)。生成的時間戳將在當(dāng)?shù)貢r區(qū),因此有 2 小時的偏移量。
您可以將tzinfo參數(shù)傳遞給datetime指定時間應(yīng)被視為 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)

TA貢獻1877條經(jīng)驗 獲得超1個贊
如果您的日期時間對象實際上代表本地時間(即您的操作系統(tǒng)設(shè)置),您可以簡單地使用
from datetime import datetime
import pandas as pd
t = pd.to_datetime(datetime(2020, 5, 11).astimezone())
# e.g. I'm on CEST, so t is
# Timestamp('2020-05-11 00:00:00+0200', tz='Mitteleurop?ische Sommerzeit')
請參閱:如何在 Python 中獲取“時區(qū)感知”的 datetime.today() 值?
請記住,pandas它將把 naive Python datetime 對象當(dāng)作 UTC 來對待:
from datetime import timezone
t1 = pd.to_datetime(datetime(2020, 5, 11, tzinfo=timezone.utc))
t2 = pd.to_datetime(datetime(2020, 5, 11))
t1.timestamp() == t2.timestamp()
# True
另請參閱:Python datetime 和 pandas 為同一日期提供不同的時間戳
添加回答
舉報