(Возможно, есть лучший способ задать вопрос, но, надеюсь, это описание сделает его более понятным)
Упрощенное представление моего фрейма данных с 10 случайными строками:
Duration starting_station_id ending_station_id
5163 420 3077 3018
113379 240 3019 3056
9730 240 3047 3074
104058 900 3034 3042
93110 240 3055 3029
93144 240 3016 3014
48999 780 3005 3024
30905 360 3019 3025
88132 300 3022 3048
12673 240 3075 3031
То, что я хочу сделать, это groupby, начиная с_стадий_идейсов и заканчивая_стадий_идейсов, и отфильтровывать строки, в которых значение в столбце Длительность для группы превышает квантиль 0,99.
Чтобы выполнить вычисления для групп и квантилей, Я делаю:
df.groupby( ['starting_station_id', 'ending_station_id'] )[ 'Duration' ].quantile([.99])
и некоторый частичный вывод:
3005 3006 0.99 3825.6
3007 0.99 1134.0
3008 0.99 5968.8
3009 0.99 9420.0
3010 0.99 1740.0
3011 0.99 41856.0
3014 0.99 22629.6
3016 0.99 1793.4
3018 0.99 37466.4
Я считаю, что это говорит мне о том, что для группы (3005, 3006) значения> =3825,6 попадают в квантиль .99.Итак, я хочу отфильтровать строки, в которых значение длительности для этой группы> = 3825,6.(И затем сделайте то же самое для всех других групп)
Каков наилучший способ сделать это?