【发布时间】:2022-01-21 01:36:46
【问题描述】:
我有一个索引为 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 时,我记得它抱怨它不是日期时间,或者我无法转换为东部时间作为索引。然后当我制作新版本时,它说它是一个副本,我做了深拷贝以摆脱那个错误。一定有更好的办法。
【问题讨论】: