【发布时间】:2019-09-30 06:23:42
【问题描述】:
在基于某些条件在 pandas 数据框中创建新列时,numpy 的 where 方法在执行时间方面优于 apply 方法,为什么会这样?
例如:
df["log2FC"] = df.apply(lambda x: np.log2(x["C2Mean"]/x["C1Mean"]) if x["C1Mean"]> 0 else np.log2(x["C2Mean"]), axis=1)
df["log2FC"] = np.where(df["C1Mean"]==0,
np.log2(df["C2Mean"]),
np.log2(df["C2Mean"]/df["C1Mean"]))
【问题讨论】:
-
apply是用于逐行循环的语法糖。在您的其他 sn-p 中,它作用于整个列