我有一個索引為 UTC 的資料框。我想過濾美國/東部的行。資料如下所示:
open high low close volume \
timestamp
2022-01-12 14:00:00-05:00 69.485 69.56 69.445 69.540 800424
2022-01-12 14:30:00-05:00 69.530 69.60 69.480 69.550 675122
2022-01-12 15:00:00-05:00 69.555 69.57 69.455 69.505 747475
2022-01-12 15:30:00-05:00 69.500 69.67 69.410 69.560 2655043
2022-01-12 16:00:00-05:00 69.540 69.54 69.540 69.540 718856
我只想要每天在某個時間之間的行,例如美國東部標準時間上午 9 點到下午 4 點。
這段代碼做了我想做的事,但似乎必須有一個更簡單更直接的方法。
mdf.reset_index(inplace=True)
mdf["timestamp"] = pd.to_datetime(mdf['timestamp'])
mdf['timestamp'] = mdf['timestamp'].dt.tz_convert('US/Eastern')
mdf.index = pd.DatetimeIndex(mdf.timestamp)
tdf = mdf.between_time('09:00', '16:00')
bdf = tdf.copy(deep=True)
bdf.drop(['timestamp'],axis=1, inplace=True)
當我在索引上嘗試 between_time 時,我記得它抱怨它不是日期時間,或者我無法轉換為東部時間作為索引。然后當我制作新版本時,它說它是一個副本,我做了深拷貝以擺脫那個錯誤。一定會有更好的辦法。
uj5u.com熱心網友回復:
你可以試試 indexer_between_time
idx = pd.to_datetime(df.index).tz_convert('US/Eastern').indexer_between_time('09:00', '16:00')
out = df.iloc[idx]
uj5u.com熱心網友回復:
你可以避免幾行。由于timestamp已經是您的索引,我們可以將其DatetimeIndex直接轉換為 a。
mdf.index = pd.to_datetime(mdf.index)
new = mdf.between_time('09:00', '16:00').reset_index().drop('id', axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418939.html
標籤:
上一篇:比較兩次范圍JavaScript
