2016-05-26 2 views
2

У меня есть временная диаграмма временных данных с числовыми данными в столбцах. При построении этих данных я хочу только построить определенные серии, которые считаются недостаточными. Вот как я выбрать столбцы для построения:pandas: отфильтрованные столбцы на основе общей суммы и среднего значения

df.loc[:, (df.iloc[-1] >= 100) & (df.sum() >= 1000)] 

Другими словами, критерии «значительный» в том, что общая сумма значений в серии в более чем 1000 и самое последнее значение составляет по меньшей мере 100

Это, однако, оказалось недостаточным. Вместо этого мне нужно, чтобы сумма превышала 1000 (как и раньше), но я хочу, чтобы среднее значение последних двух строк (два последних значения) было более 100.

Как изменить фильтр выше на вычислить среднее?

В:

date   A B C D 
2016-04-01 80 235 99 0 
2016-04-02 85 295 153 14 
2016-04-03 111 363 224 14 
2016-04-04 111 379 296 50 
2016-04-05 11 51 29 5 

Out:

date   B C 
2016-04-01 235 99 
2016-04-02 295 153 
2016-04-03 363 224 
2016-04-04 379 296 
2016-04-05 51 29 

ответ

3

Вам просто нужно изменить срез (df.iloc[-2:]) и вызовите .mean():

df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)] 

(Там, кажется, ошибка в вашем примере. Ввод и вывод для последней строки отличаются.)

Смежные вопросы