首页 > 解决方案 > 具有时间序列的 DataFrame:在 6 小时窗口中选择行

问题描述

假设我有以下 pandas DataFrame df

                             id          state
Date
2019-09-01 00:00:00-05:00   SV107       OCCUPIED
2019-09-01 00:00:00-05:00   HO575         VACANT
2019-09-01 00:00:03-05:00   WV159         VACANT
2019-09-01 00:00:03-05:00  CC1268       OCCUPIED
2019-09-01 00:00:04-05:00  CB3915       OCCUPIED
...

实际的 DataFrame 有数百万行,日期从2019-09-01 00:00:00-05:002019-09-30 23:59:59-05:00

在此 DataFrame 中,我只想选择其小时在窗口00:00:00-05:00中的行05:59:59-05:00(6 小时窗口)。也就是说,创建一个新的 DataFrame,其中仅df显示在此窗口中的行。

我每天都能做到,例如:

df.loc['2019-09-01 00:00:00-05:00':'2019-09-01 05:59:59-05:00']

但我想一次在每个月的每一天都这样做。

标签: pythonpandasdataframedatetime

解决方案


根据:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeIndex.hour.html

你可以这样做:

new_df = df[df.index.hour < 6]

如果您的索引是 ,这将起作用DateTimeIndex,因此请确保您的Date列是带有 的日期pd.to_datetime


推荐阅读