У меня есть следующий фрейм данных панд:
df_raw = pd.DataFrame({"id": [1,1,1,2,2], "date": [pd.Timestamp(2002,1,1), pd.Timestamp(2002,1,28), pd.Timestamp(2002,2,1), pd.Timestamp(2003,5,5),pd.Timestamp(2003,5,28)],"value_1": [10,20,30,40,50], "value_2": [60,70,np.nan,np.nan,100]})
Я хочу добиться следующего:
- Строки с одинаковым идентификатором и датами которых максимум 30необходимо объединить дни друг от друга.
- Объединение произойдет таким образом, что будут взяты значения из строки, чья дата является более поздней, а также дата.
- Если вв более поздней строке пропущены значения, значения должны быть взяты из строки, дата которой является менее новой.
- Для каждой строки, которая может быть объединена, всегда проверяйте, можем ли мы объединить строку со строкой, которая имеет большенедавняя датаЕсли это так, объедините его с этим.
- Максимальное объединение двух строк.Если две строки объединены, попробуйте объединить их со следующей строкой, если хотя бы одна строка также находится в диапазоне 30 дней.
Итак, получаемые данные должны быть:
df_processed = pd.DataFrame({"id": [1,1,2], "date": [pd.Timestamp(2002,1,1), pd.Timestamp(2002,2,1), pd.Timestamp(2003,5,28)], "value_1": [10, 30,50], "value_2": [60, 70,100]})
Отказ от ответственности: это упрощенная версия того, чего я действительно хочу достичь, поэтому у меня могут быть некоторые дополнительные вопросы.