Наборы данных скользящего окна в проблеме Python - PullRequest
0 голосов
/ 09 июля 2020

Привет, я новичок в Python и был бы очень признателен, если бы кто-нибудь помог мне с моей проблемой:

У меня есть фрейм данных, который выглядит, как показано ниже:

Date        rf1     rf2      rf3.....rf15
01-01-2008  FALSE   TRUE    TRUE     TRUE
02-01-2008  FALSE   TRUE    FALSE    FALSE
03-01-2008  TRUE    TRUE    FALSE    FALSE
04-01-2008  TRUE    FALSE   TRUE     TRUE

Я хотел создать период 250 дней, используя столбец дат во фрейме данных с скользящим периодом в 20 дней. Например, мой первый период начнется от 01-01-2008 до +250 дней, мой второй период начнется от 20-01-2008 до +250 дней и т. Д.

Я хочу, чтобы были выполнены два условия:

  1. Мне нужно выбрать те периоды 250 дней, в которых мой TRUE считается в столбце <24 </li>
  2. В окне 250 дней, которое я создал, мои столбцы должны быть FALSE для 90 дней подряд за 1 день

У меня есть приведенный ниже код, но я почему-то не могу понять, как правильно выполнить мои два условия.

    import pandas as pd
result = df.rolling(250, on='Date').sum().dropna().rename(
    columns={'Date': 'End'}).assign(Start=df['Date'] - pd.Timedelta(249, 'D'))



# reorder columns
result = result.reindex(columns=['Start', 'End', 'rf1', 'rf2','rf3','rf4','rf5','rf6','rf7','rf8','rf9','rf10','rf11','rf12','rf13','rf14','rf15'])



# resample on every 20th day
result=result.resample('20D', on='Start').first().reset_index(drop=True)

Этот код дает мне окно 250 дней, но я не уверен, как удовлетворить два моих условия в этом фрейме данных! Помощь будет очень признательна.

Заранее большое спасибо

...