[英]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)]
])
請注意,我遍歷您的所有條件,然后連接所有結果數據幀。
你可以存儲在dayofweek
和hour
從你的方法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.