【发布时间】:2021-01-12 16:40:05
【问题描述】:
我有一个关于在操作 DataFrame 时在任何循环中使用条件的问题。
例如, 我有一个数据框
df:
a b c
1 2 5
3 4 3
2 1 7
6 3 6
5 1 9
我正在尝试编写一个带有条件的循环,该条件一次检查两个列 (a and b),如果值 i 在任一列或两列中可用,那么它应该从列 @987654324 中获取值@ 并将其存储在一个数组中。
使用它我可以稍后执行统计操作,例如查找数组的平均值。
我为这个任务写了一个简化的代码sn-p:
for i in 1:5
result1 = Float64[]
result2 = Float64[]
if (df[:, :a] = i)
push!(result1, df[:, :c])
elseif (df[:, :b] = i)
push!(result2, df[:, :c])
end
unique!(result1)
unique!(result2)
result = vcat(result1, result2)
global mean_val = mean(result)
end
这里,i 值的范围为 1 到 5,对于每个值,a and b 列都将检查其是否存在,如果值存在,则 c 列中的值应推送到受尊重的结果数组。
我尝试过使用来自社区的其他一些建议,例如:
代码示例1:
for i in 1:5
mean_val = mean(df[:, :c] for i in ("a", "b")
end
代码示例2:
for i in 1:5
df.row = axes(df, 1)
mean_val = mean((filter(x->x[:a] == i || x[:b] == i ,df))[:c])
end
但是这些不起作用并返回所需的输出。
请就我在代码中的错误提出建议。 另外,请建议是否有任何文档解释了在语句中实现多个条件以及访问数据框元素以进行 julia 中的任何其他操作。
提前谢谢你
【问题讨论】: