Я пытаюсь получить все записи, где среднее из последних трех строк больше, чем общее среднее для всех строк в отфильтрованном наборе.Фильтрация Pandas Dataframe по средним значениям из последних N
_filtered_d_all = _filtered_d.iloc[:, 0:50].loc[:, _filtered_d.mean()>0.05]
_last_n_records = _filtered_d.tail(3)
Что-то вроде этого
_filtered_growing = _filtered_d.iloc[:, 0:50].loc[:, _last_n_records.mean() > _filtered_d.mean()]
Однако проблема здесь заключается в том, что длина неверное значение. Какие-нибудь советы?
ValueError: Series lengths must match to compare
Примеры данных
Это имеет индекс на год и месяц, и 2 колонки.
Col1 Col2
year month
2005 12 0.533835 0.170679
12 0.494733 0.198347
2006 3 0.440098 0.202240
6 0.410285 0.188421
9 0.502420 0.200188
12 0.522253 0.118680
2007 3 0.378120 0.171192
6 0.431989 0.145158
9 0.612036 0.178097
12 0.519766 0.252196
2008 3 0.547705 0.202163
6 0.560985 0.238591
9 0.617320 0.199537
12 0.343939 0.253855
ли в виду последние 3 строки в dataframe или предыдущие 3 строк (т.е., если я на строке 5, то она должна быть средством 3,4 и 5)? – RexFuzzle
Да, у вас было бы df = [1, 2, 3, 4, 5, 6, 7] И вы хотите узнать, больше ли среднее из последних трех значений, чем среднее из всех значений в массив (имеет смысл во временном ряду :)) – Eamonn