【发布时间】:2018-06-28 06:39:11
【问题描述】:
我正在尝试按 pandas DataFrame 中的列进行分组并应用 ifelse 函数,该函数具有使用列值的测试,并根据测试返回不同的真值和假值。
我已经在 R 中使用 data.table 包轻松完成了这项工作,我基本上希望在 Python 中使用 pandas 实现这一点。
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']
【问题讨论】:
-
使用 Pandas groupby 然后检查 Where doc: pandas.pydata.org/pandas-docs/version/0.23.1/generated/…
-
预期输出是多少?
-
@ZeroStack - 谢谢,但 R 对我来说很难,所以请询问预期的输出 - 新列中的数字。
标签: python r pandas if-statement data.table