Я пытаюсь сгруппировать по столбцу в панде DataFrame и применить функцию ifelse, у которой есть тест, который использует значения столбцов и возвращает разные значения для true и false в зависимости от теста.
Я легко выполнил это в R с помощью пакета data.table, и я бы хотел, чтобы в Python было то же самое, используя панд.
library(data.table)
dat <- data.table(
i_n = c('a', 'b', 'b', 'd', 'e', 'f', 'g', 'h', 'h', 'i'),
m_b_r = c(0, 1, 0, 0, 0, 0, 0, 1, 0, 0),
o_q = c(1, 8, 8, 1, 1, 1, 1, 2, 2, 1),
a_q = c(1, 5, 15, 1, 57, 1, 5, 1, 1, 1)
)
dat <- dat[, ('p_q') := ifelse(
test =get('m_b_r') == 1,
yes =get('a_q'),
no =get('o_q') - data.table::shift(get('a_q'), n = 1L, type = 'lag', fill = 0 )
), by = 'i_n']