我有一個包含 2 個字串格式的時間戳列的資料集YYYY-mm-dd HH:mm:ss。這些時間戳的時區不包含在字串中,但它們采用 UTC 格式,我想將它們轉換為美國/太平洋地區。
我的資料集在一個 csv 檔案中,所以我正在使用決議這兩個時間戳列
df = pd.read_csv("my_dataset.csv", parse_dates=['timestamp_col1', 'timestamp_col2'])
在這里閱讀了一些帖子后,似乎以下(僅一列的示例)可能是一個可能的解決方案
pd.to_datetime(df.timestamp_col1, utc=True).astimezone(timezone('US/Pacific'))
但是,我收到以下錯誤。有關如何解決此問題的任何見解或有更好的方法嗎?
'Series' object has no attribute 'astimezone'
uj5u.com熱心網友回復:
看來您正在尋找dt.tz_convert:
pd.to_datetime(df.timestamp_col, utc=True)
#0 2022-10-10 10:10:00 00:00
#Name: timestamp_col, dtype: datetime64[ns, UTC]
pd.to_datetime(df.timestamp_col, utc=True).dt.tz_convert(tz="US/Pacific")
#0 2022-10-10 03:10:00-07:00
#Name: timestamp_col, dtype: datetime64[ns, US/Pacific]
資料:
df = pd.read_csv(StringIO("""timestamp_col
2022-10-10 10:10:00
"""), parse_dates=['timestamp_col'])
df
timestamp_col
0 2022-10-10 10:10:00
uj5u.com熱心網友回復:
該pandas.Timestamp物件具有其本機時區功能。用引數本地化它,tz然后用方法簡單地轉換它tz_convert()。所以不需要混合包
pd.Timestamp.now(tz='UTC').tz_convert('US/Pacific')
這篇文章也涵蓋了它。
您還可以使用轉換系列的所有時間戳apply
sr = pd.Series([pd.Timestamp.now(tz='UTC'), pd.Timestamp.now(tz='UTC')])
sr.apply(lambda x: x.tz_convert('US/Pacific'))
需要使用此解決方法,因為pandas.Series.tz_conver()需要 apandas.DatetimeIndex以便它轉換索引而不是值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472606.html
