Jor*_*des 6 if-statement dataframe julia
我正在使用 Julia,我得到了一个包含 42 个值的数据框,其中缺少 2 个值。
该值是从 0.23 到 0.3 的价格
我正在尝试建立一个新专栏,通过ifelse声明来判断它是否便宜或昂贵。
ifelse 应该去:
df.x_category=ifelse.(df.x .< mean(df.x),"cheap", "expensive")
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
ERROR: TypeError: non-boolean (Missing) used in boolean context
Run Code Online (Sandbox Code Playgroud)
有没有办法跳过那些缺失的值?
我尝试过:
df.x_category=ifelse.(skipmissing(df.x) .< mean(skipmissing(df.x)),"cheap", "expensive")
Run Code Online (Sandbox Code Playgroud)
但出现此错误:
ERROR: ArgumentError: New columns must have the same length as old columns
Run Code Online (Sandbox Code Playgroud)
我不能只是删除缺失的观察结果。
我怎样才能做到这一点?
提前致谢!
ifelse只能处理 2 个值,而您需要处理 3 个值。假设您有
df = DataFrame(x=rand([0.23,0.3,missing], 10))
Run Code Online (Sandbox Code Playgroud)
Thanmean(df.x)产生 a,missing因为某些值是missings。你需要做的是 mean(skipmissing(df.x)))。
因此代码可以是:
julia> map(x -> ismissing(x) ? missing : ifelse(x,"cheap", "expensive"), df.x .< mean(skipmissing(df.x)))
10-element Vector{Union{Missing, String}}:
missing
missing
"cheap"
missing
"expensive"
missing
missing
missing
"cheap"
"cheap"
Run Code Online (Sandbox Code Playgroud)
在这里,我将 ifelse 与处理缺失值的方法结合起来,map还有其他方法,但每种方法都需要嵌套一些条件函数。
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |