R's group_by-> filter-> суммировать эквивалент в пандах для быстрого прототипирования? - PullRequest
0 голосов
/ 02 июня 2019

Нужно преобразовать некоторые коды из R в Python.

в R, используя dplyr, мы делаем следующее:

df %>%
group_by(col_a, col_b) %>%
summarise( a = sum(col_c == 'a'),
      b = sum(col_c == 'b'),
      c = b/a
)

Глядя на некоторые старые ответы, предложение использовать метод apply,и обернуть наши требования в функцию.Создание функций - довольно медленный процесс, особенно когда мы пытаемся создать несколько новых столбцов для эксперимента.

Можем ли мы сделать что-то похожее на пример R, который я привел в пандах аналогичным образом?

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Я могу. *

На самом деле я пробовал нечто подобное, но панды намного медленнее (около 1 с, а dplyr - 200 мс):

Только один пример:

df.groupby('id').agg({'out':[lambda x:sum(x==4)]})

Я смогчтобы ускорить его, отфильтровывая набор данных перед группировкой и агрегированием:

df.assign(out=df.out==4).groupby('id').agg({'out':sum})

Но это лишает свободы создания нескольких фильтров и сравнения их в одной строке кода.то есть я не могу сделать фильтр df.out == 4 и df.out == 3 и т.д. в одной строке, поместить их в переменные, а затем продолжить и взять соотношение / сумму этих двух.

пытался много гуглить, но не получал ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...