【发布时间】:2018-09-03 16:21:52
【问题描述】:
我正在尝试将 df 中的所有缺失值转换为数值,例如0(是的,知道我在做什么..)。
在 Julia 0.6 中我可以写:
julia> df = DataFrame(
cat = ["green","blue","white"],
v1 = [1.0,missing,2.0],
v2 = [1,2,missing]
)
julia> [df[ismissing.(df[i]), i] = 0 for i in names(df)]
得到:
julia> df
3×3 DataFrames.DataFrame
│ Row │ cat │ v1 │ v2 │
├─────┼───────┼─────┼────┤
│ 1 │ green │ 1.0 │ 1 │
│ 2 │ blue │ 0.0 │ 2 │
│ 3 │ white │ 2.0 │ 0 │
如果我在 Julia 0.7 中尝试,我会得到一个非常奇怪的错误:
MethodError: 不能
convert一个 Float64 类型的对象到一个对象 字符串类型
我无法得到我想要转换为字符串的内容 ???任何解释(和解决方法)?
【问题讨论】:
-
如果我删除了
cat列它可以工作.. 它似乎仍在尝试应用分配,即使cat的情况下的数组是空的,而在 Julia 0.6 中它让我们说“更聪明”,意识到在哪里操作的集合是空的.. -
在列表理解中添加
if typeof(df[i]) <: Vector{Union{Missing, Number}}不起作用。如果我能找到一种方法来指定联合内的类型(请参阅the separate SO question 我确实打开了)我可以解决问题!