![](/img/trans.png)
[英]Can pandas.to_datetime() format unix time to local timezone?
[英]pandas.to_datetime() how to convert from local timezone to UTC unix timestamp?
我有一個“YYYY-MM-DD”形式的日期值列表。 這些值位於本地 PC 的時區(我不知道)。 這些值在 Pandas dataframe 中作為系列加載,我想將它們轉換為 UTC 時間戳。
ts = pd.to_datetime(s, format="%Y-%m-%d")
print(ts[0])
print(int(ts[0].timestamp()))
print(ts[0].strftime("%d.%m.%Y %Z"))
它給了我 output:
2021-01-01 00:00:00
1609459200 --> this is 'Friday, January 1, 2021 0:00:00 UTC'
01.01.2021
即它將源字符串作為UTC 並將其放入UTC。 但我的源字符串是本地時間,output 不正確。
s = pd.Series(['2021-01-01 Europe/Moscow', '2021-01-02 Europe/Moscow'])
ts = pd.to_datetime(s, format="%Y-%m-%d %Z")
print(ts[0])
print(int(ts[0].timestamp()))
print(ts[0].strftime("%d.%m.%Y %Z"))
它給了我真正需要的結果:
2021-01-01 00:00:00+03:00
1609448400 --> this is correct 'Thursday, December 31, 2020 21:00:00 UTC'
01.01.2021 MSK
但是時區名稱在這里是硬編碼的。
from datetime import datetime
from dateutil import tz
print(datetime.now(tz.tzlocal()).tzname())
它給了我 output MSK
。 但是這個 output 的問題 - 當我嘗試將它用於 Pandas.to_datetime 時 - 它給了我一個錯誤:
s = pd.Series(['2021-01-01 MSK', '2021-01-02 MSK'])
ts = pd.to_datetime(s, format="%Y-%m-%d %Z")
ValueError:時間數據“2021-01-01 MSK”與格式“%Y-%m-%d %Z”不匹配(匹配)
因此,我看到了以下前進方式:
Europe/Moscow
而不是短MSK
,pandas.to_datetime()
格式選項%Z
識別時區名稱的縮寫形式MSK
,我有點堅持在這里選擇前進的道路。 你能給我建議哪種方式可以給我更好的代碼嗎?
我認為您可以使用Series.dt.tz_localize
:
from dateutil import tz
s = pd.Series(['2021-01-01', '2021-01-02'])
ts = pd.to_datetime(s, format="%Y-%m-%d").dt.tz_localize(tz.tzlocal())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.