Нужно преобразовать некоторые коды из 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 и т.д. в одной строке, поместить их в переменные, а затем продолжить и взять соотношение / сумму этих двух.
пытался много гуглить, но не получал ответов.