簡體   English   中英

如何按星期幾和一天中的小時過濾 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)]
])

請注意,我遍歷您的所有條件,然后連接所有結果數據幀。

你可以存儲在dayofweekhour從你的方法index變量,然后用它們iloc進行篩選:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM