Dataframe 在同一列中分配筛选值的结果不正确
我想筛选列中的值,并为筛选结果指定一个值。但是我得到了不正确的结果, 在本例中,我希望将值1指定给介于20和30之间的值,其余值为0。但我所有的值都是1。你知道为什么吗Dataframe 在同一列中分配筛选值的结果不正确,dataframe,julia,Dataframe,Julia,我想筛选列中的值,并为筛选结果指定一个值。但是我得到了不正确的结果, 在本例中,我希望将值1指定给介于20和30之间的值,其余值为0。但我所有的值都是1。你知道为什么吗 df = DataFrame( Dict( "time" => collect(1:10), "cost" => [23,99,81,56,28,31,98,34,21,17] ) ) df.cat = missing df.c
df = DataFrame(
Dict(
"time" => collect(1:10),
"cost" => [23,99,81,56,28,31,98,34,21,17]
)
)
df.cat = missing
df.cat = ifelse.(df.cost .> 20 .& df.cost .< 30, 1,0)
df=DataFrame(
口述(
“时间”=>收集(1:10),
“成本”=>[23,99,81,56,28,31,98,34,21,17]
)
)
df.cat=缺失
df.cat=ifelse(df.cost.>20和df.cost.<30,1,0)
输出:
问题是需要在
df.cost.>20
和df.cost.<30
部分周围加括号:
julia> df = DataFrame(
Dict(
"time" => collect(1:10),
"cost" => [23,99,81,56,28,31,98,34,21,17]
)
);
julia> df.cat = ifelse.((df.cost .> 20) .& (df.cost .< 30), 1, 0);
julia> df
10×3 DataFrame
Row │ cost time cat
│ Int64 Int64 Int64
─────┼─────────────────────
1 │ 23 1 1
2 │ 99 2 0
3 │ 81 3 0
4 │ 56 4 0
5 │ 28 5 1
6 │ 31 6 0
7 │ 98 7 0
8 │ 34 8 0
9 │ 21 9 1
10 │ 17 10 0
julia>df=DataFrame(
口述(
“时间”=>收集(1:10),
“成本”=>[23,99,81,56,28,31,98,34,21,17]
)
);
julia>df.cat=ifelse((df.cost.>20)和(df.cost.<30),1,0);
julia>df
10×3数据帧
一行│ 成本时间猫
│ Int64 Int64 Int64
─────┼─────────────────────
1.│ 23 1 1
2.│ 99 2 0
3.│ 81 3 0
4.│ 56 4 0
5.│ 28 5 1
6.│ 31 6 0
7.│ 98 7 0
8.│ 34 8 0
9│ 21 9 1
10│ 17 10 0
您遇到了运算符优先级问题。这是一个修复:
df.cat = ifelse.((df.cost .> 20) .& (df.cost .< 30), 1, 0)
df.cat=ifelse.((df.cost.>20)和(df.cost.<30),1,0)
(注意条件周围的附加括号)
作为另一个注意事项,考虑将DATAFAMRES.JL升级到最新版本,因为显然您不在0.22版本,因为<代码> DF.CAT=缺失操作在2年前已经被弃用,并且目前我们更紧凑地打印数据帧以改善显示体验。