簡體   English   中英

轉換為系列時,Pandas Timezone Aware Index會丟棄時區

[英]Pandas Timezone Aware Index Drops Timezone When Converting To Series

我試圖將數據幀的時間索引作為一個系列,但是當我調用方法to_series時,它似乎正在刪除時區。 以下是一個例子。 這是一個錯誤還是我做錯了什么?

rows = 50
df = pd.DataFrame(np.random.randn(rows,2), columns=list('AB'), index=pd.date_range('1/1/2000', periods=rows, freq='1H', tz=pytz.UTC))

print df.index[-1]
# 2000-01-03 01:00:00+00:00

print df.index.to_series()[-1]
# 2000-01-03 01:00:00


print df.index[-1].tzinfo
# UTC

print df.index.to_series()[-1].tzinfo
#None

不,你沒有做錯什么,也不是一個錯誤。
這是目前已知的pandas / numpy 限制 :只有索引支持時區感知日期時間數據。 在一系列中,數據存儲為numpy datetime64類型,不支持時區。 將此時區功能添加到系列有一個未解決的問題: https//github.com/pydata/pandas/issues/8260

解決方法是將數據存儲為object dtype而不是datetime64 (然后它們將存儲為Timestamp對象, datetime.datetime的子類)。 這將使您能夠保留時區信息。
to_series有一個keep_tz關鍵字參數來獲取它(參見docstring ):

In [34]: df = df.tz_convert('US/Eastern')

In [35]: df.index.to_series()[-1]
Out[35]: Timestamp('2000-01-03 01:00:00')

In [36]: df.index.to_series(keep_tz=True)[-1]
Out[36]: Timestamp('2000-01-02 20:00:00-0500', tz='US/Eastern', offset='H')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM