gpt4 book ai didi

julia - Julia中没有任何值的DataFrame列?

转载 作者:行者123 更新时间:2023-12-04 00:02:29 25 4
gpt4 key购买 nike

我正在尝试了解 DataFrames 在 Julia 中是如何工作的,但我遇到了困难。

我通常使用 DataFrames——在 Python 中——在每个模拟步骤中添加新列并用值填充每一行。

例如,我有这个包含输入数据的 DataFrame:

using DataFrames

df = DataFrame( A=Int[], B=Int[] )
push!(df, [1, 10])
push!(df, [2, 20])
push!(df, [3, 30])

现在,假设我根据那些 AB 列进行计算,这些列生成第三列 C 和 DateTime 对象。但并非所有行都生成 DateTime 对象,它们可能为 null。

  1. Julia 如何处理该用例?
  2. 我应该如何创建新的 C 列并在 for r in eachrow(df) 内分配值?
# Pseudocode of what I intend to do

df[! :C] .= nothing

for r in eachrow(df)
if condition
r.C = mySuperComplexFunctionThatReturnsDateTimeForEachRow()
else
r.C = nothing
end
end

为了给出一个可运行的具体代码,让我们伪造条件和函数:

df[! :C] .= nothing

for r in eachrow(df)
if r.A == 2
r.C = Dates.now()
else
r.C = nothing
end
end

最佳答案

执行此操作的有效模式是:

df.C = f.(df.A, df.B)

其中 f 是一个函数,它接受标量并根据它们计算输出(即您的模拟代码),然后您将需要从 df 中提取的列传递给它> 执行计算。通过这种方式,Julia 编译器将能够生成快速(类型稳定)的 native 代码。

在您的示例中,函数 f 将是 ifelse 因此您可以编写:

df.C = ifelse.(df.A .== 2, Dates.now(), nothing)

还要考虑是否返回 nothingmissing(它们在 Julia 中有不同的解释:nothing 表示没有值,而 missing 表示该值存在但未知;我不确定在您的情况下哪个更好)。

关于julia - Julia中没有任何值的DataFrame列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com