过滤行和附加值
我想过滤数据帧并将值附加到数据帧中的新/现有列。例如,在下面的数据框中,我想将 0.7 的值附加到列 pre-mean 中,其中月份值等于 11。所以换句话说,pre_mean 列的第 2 到 5 行应该包含 0.7 的值,而所有其他列都应该有一个 NaN 值。
我试过这样的事情,但当然这是不正确的。
df[:pre_mean] = ifelse.(df[:month] .== 11, 0.7, df)
在 python 中,你可以使用 pd.apply 或 np.where 函数来做到这一点,
#How to do in python
df["pre_mean"] = np.where(df["month"] == 11, 0.7, None)
但我不知道如何在 Julia 中实现这一目标?有任何想法吗?
回答
df[df.month .== 11, :pre_mean] .= 0.7
这应该有效。
回答
此外,问题中的答案几乎是正确的:
df.pre_mean .= ifelse.(df.month .== 11, 0.7, df.premean)
这应该比@Andy_101(这也是正确的)提出的解决方案更快,因为它没有分配。
作为旁注,注意df[:pre_mean]在 DataFrames.jl中是不允许的。数据框是一个二维对象,因此您必须同时传递行和列选择器(除非您使用getproperty@Andy_101 和我的答案中的方法)。