[英]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.