我有一个数据框。我想将列“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)
我想将列“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.0
else 返回log(x)
。这种“单行if
语句”称为三元运算符。