如何使用 julia 将数据框的列乘以日志?

Aiz*_*aac 2 dataframe julia

我有一个数据框。我想将列“b”乘以“日志”,然后用 0 替换 NaN。

我怎么能在朱莉娅做到这一点?我正在检查这个:DataFrames.jl 但我不明白。

df = DataFrame(a = repeat([1, 2, 3, 4], outer=[2]),
           b = repeat([2, 1], outer=[4]),
           c = randn(8))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Ale*_*lec 5

我想将列“b”乘以“日志”

假设您的意思是要将(自然)log应用于 column 中的每个元素:b,您可以执行以下操作:

log.(df.b)

log(x)将(自然)日志应用于单个元素x。通过在日志后放置一个点,您可以在每个元素上广播log功能。

如果要替换 b 列,请执行以下操作:

df.b = log.(df.b)

然后用 0 替换 NaN

我假设你想处理你有一个DomainError(即取log负数)的情况。最好的办法是在错误出现之前处理它:

map( x -> x <= 0 ? 0.0 : log(x), df.b)

这将匿名函数 映射到x -> x <= 0 ? 0.0 : log(x)DataFrame 中 b 列的每个元素。此函数测试是否x小于零 - 如果是,则返回0.0else 返回log(x)。这种“单行if语句”称为三元运算符