dataframe - Julia 数据框中具有列名的控制流
问题描述
当 Julia 数据帧中不存在列名时,我正在寻找一种解决方案。
更详细地说,假设我有以下数据框和列表:
df = DataFrame(id= "12345", description= rand(5));
err_Li = ["12345"]
我需要检查id
列是否匹配,err_Li
例如:
if (df[1,"id"] in err_Li)
println("NOT VALID")
else
end
但是,在我的某些数据框中,列名id
不存在。因此,在 Python 中,我可以处理try-except
以下问题:
try :
if df['id'][0] in err_Li:
print('err')
else: pass
except : pass
try-except
当 Julia 数据帧中不存在列名或Python 中是否存在等效函数时,如何进行控制流?
解决方案
由于您知道并期望您的某些数据框不会包含此列,因此在这种情况下通常最好使用普通控制流 ( 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>
columnindex
是一个接受 DataFrame 和 Symbol ( :id
) 的函数,如果 Symbol 与 DataFrame 中的列名不对应,则返回 0。如果:id
在 DataFrame 中作为列存在,则columnindex
返回该列的位置(从 1 开始),因此在这种情况下,结果将大于 0。因此,我们可以使用它来检查该列是否存在于我们的 DataFrame 中,并且仅在该列存在时才继续检查该值。
推荐阅读
- c++ - 如何将包含瓷砖编号的字符串转换为包含瓷砖编号坐标的地图或矢量?
- python - cvxpy DCPError:问题不遵循 DCP 规则
- c# - Binding 中的对象未显示在 ListView 中
- php - 如何在 Laravel 8 Base Controller 中声明一个公共函数
- c - sendmsg() / connect() 因原始 IPv6 套接字上的权限错误/EACCES 而失败
- pandas - 从数据框中的列中选择最后一个观察值
- flask - 使用 OAuth2 进行身份验证时,如何绕过 Superset 的登录页面?
- c++ - C ++存储容器元素的指针
- javascript - 如何更改条件运算符的开关构造?
- reactjs - 使用 GraphQL 在 NextJS 中渲染的钩子比上一次渲染时更多