如何按星期几和小时过滤pandas DatetimeIndex

时间:2018-01-31 15:46:33

标签: python pandas filter datetimeindex

我有一个pandas DatetimeIndex,我想按照星期几和一天中的小时与列表匹配的标准来过滤索引。 例如,我有每个TimeStamp指示有效(星期几,小时,分钟)的元组列表:

[(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)]

中某一天和一小时的索引

2 个答案:

答案 0 :(得分:3)

您可以将dayofweekhour方法存储在index变量中,然后将其与iloc一起使用来过滤:

dayofweek = df.index.dayofweek
hour = df.index.hour

df.iloc[((dayofweek == 4) & (hour == 6)) | ((dayofweek == 5) & (hour == 7))]

答案 1 :(得分:1)

您应该添加列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)]
])

请注意,我遍历所有条件,然后连接所有结果数据帧。