如何按星期几和一天中的小时过滤 pandas DatetimeIndex
How to filter a pandas DatetimeIndex by day of week and hour in the day
我有一个 pandas DatetimeIndex,我想根据星期几和一天中的小时匹配列表的标准来过滤索引。
例如,我有一个元组列表,指示每个时间戳的有效(星期几、小时、分钟):
[(4, 6), (5, 7)]
最终索引应仅包含星期五(day_of_week = 4)小时 6 或星期六(day_of_week = 5)小时 7 的日期时间。
假设输入数据框是这样的:
2016-04-02 06:30:00 1
2016-04-02 06:45:00 2
2016-04-02 07:00:00 3
2016-04-02 07:15:00 4
2016-04-03 07:30:00 5
2016-04-03 07:45:00 6
2016-04-03 08:00:00 7
过滤后应该是这样的:
2016-04-02 06:30:00 1
2016-04-02 06:45:00 2
2016-04-03 07:30:00 5
因为我只保留列表中星期几和一天中的小时的索引 [(4, 6), (5, 7)]
您应该添加一列day_of_week
和一列hour
,然后您可以在该列上进行归档。
例如:
df["day_of_week"] = df["date"].dayofweek()
df["hour"] = df["date"].hour()
pd.concat([
df.loc[df["day_of_week"].isin(x[0]) & df["hour"].isin(x[1])]
for x in [(4, 6), (5, 7)]
])
请注意,我遍历了所有条件,然后连接了所有结果数据帧。
您可以将 index
中的 dayofweek
和 hour
方法存储在变量中,然后将它们与 iloc
一起使用以进行过滤:
dayofweek = df.index.dayofweek
hour = df.index.hour
df.iloc[((dayofweek == 4) & (hour == 6)) | ((dayofweek == 5) & (hour == 7))]
我有一个 pandas DatetimeIndex,我想根据星期几和一天中的小时匹配列表的标准来过滤索引。 例如,我有一个元组列表,指示每个时间戳的有效(星期几、小时、分钟):
[(4, 6), (5, 7)]
最终索引应仅包含星期五(day_of_week = 4)小时 6 或星期六(day_of_week = 5)小时 7 的日期时间。
假设输入数据框是这样的:
2016-04-02 06:30:00 1
2016-04-02 06:45:00 2
2016-04-02 07:00:00 3
2016-04-02 07:15:00 4
2016-04-03 07:30:00 5
2016-04-03 07:45:00 6
2016-04-03 08:00:00 7
过滤后应该是这样的:
2016-04-02 06:30:00 1
2016-04-02 06:45:00 2
2016-04-03 07:30:00 5
因为我只保留列表中星期几和一天中的小时的索引 [(4, 6), (5, 7)]
您应该添加一列day_of_week
和一列hour
,然后您可以在该列上进行归档。
例如:
df["day_of_week"] = df["date"].dayofweek()
df["hour"] = df["date"].hour()
pd.concat([
df.loc[df["day_of_week"].isin(x[0]) & df["hour"].isin(x[1])]
for x in [(4, 6), (5, 7)]
])
请注意,我遍历了所有条件,然后连接了所有结果数据帧。
您可以将 index
中的 dayofweek
和 hour
方法存储在变量中,然后将它们与 iloc
一起使用以进行过滤:
dayofweek = df.index.dayofweek
hour = df.index.hour
df.iloc[((dayofweek == 4) & (hour == 6)) | ((dayofweek == 5) & (hour == 7))]