Использование rolling
- хорошая идея, после которой вам не хватает dropna
, чтобы избавиться от лишних строк.Вот пример с 3 строками на дату в df1
и 8 строками на дату в df2
:
df1 = pd.DataFrame({'Date':[0.958]*3 + [0.959]*3,
'Data_1': [83.63,83.08,82.45,81.83,82.76,84.97]})
df2 = pd.DataFrame({'Date':[0.958]*8 + [0.959]*8,
'Data_4': [0.028,0.028,0.027,0.029]*4})
Теперь вы хотите удалить 5 строк в df2
на дату, чтобы получить только 3строки, как в df1
, вы получите с помощью groupby
, rolling
и dropna
.Функцию mean
можно изменить, если вы хотите что-то еще, а reset_index
больше для косметики.
df3 = df2.groupby('Date').rolling(window=6).mean().dropna().reset_index(drop=True)
, которая дает результат для df3
Data_4 Date
0 0.028000 0.958
1 0.027833 0.958
2 0.028000 0.958
3 0.028000 0.959
4 0.027833 0.959
5 0.028000 0.959
только3 строки на дату из данных в df2
.
Обратите внимание, что в rolling
, window = 6
, который представляет собой разницу строк на дату между df2 и df1 плюс 1 , в противном случае вы получите одну дополнительную строку.