我正在寻找一种解决方案来处理 Julia 数据框中不存在列名的情况。
更详细地说,假设我有以下数据框和列表:
df = DataFrame(id= "12345", description= rand(5));
err_Li = ["12345"]
Run Code Online (Sandbox Code Playgroud)
我需要检查id列是否匹配,err_Li例如:
if (df[1,"id"] in err_Li)
println("NOT VALID")
else
end
Run Code Online (Sandbox Code Playgroud)
但是,在我的一些数据框中,列名id不存在。所以在Python中,我可以处理try-except诸如:
try :
if df['id'][0] in err_Li:
print('err')
else: pass
except : pass
Run Code Online (Sandbox Code Playgroud)
当 Julia 数据框中不存在列名或者 Python 中是否有等效函数时,如何控制流程try-except?
由于您知道并期望某些数据帧不会包含此列,因此在这种情况下通常最好使用普通控制流 ( if- else)。应为特殊情况保留例外。
在这种情况下,您可以在语句中添加额外的条件if,如下所示:
julia> df = DataFrame(id= "12345", description= rand(5));
julia> if columnindex(df, :id) > 0 && df[1, :id] in err_Li
println("NOT VALID")
end
NOT VALID
julia> df2 = DataFrame(blah= "13579", description= rand(5));
julia> if columnindex(df2, :id) > 0 && df2[1, :id] in err_Li
println("NOT VALID")
end
julia>
Run Code Online (Sandbox Code Playgroud)
columnindex是一个接受 DataFrame 和 Symbol ( :id) 的函数,如果 Symbol 与 DataFrame 中的列名称不对应,则返回 0。如果:idDataFrame 中确实存在列,columnindex则返回该列的位置(从 1 开始),因此在这种情况下结果将大于 0。因此,我们可以使用它来检查该列是否存在于 DataFrame 中,并且仅在该列存在时才继续检查该值。