我正在使用Julia分析我的数据,我的数据中有一些异常值,因此我想删除它们;有一些数据;例如75以上的数字;我想排除它们。 例如,使用DataFrames.jl,df是一个数据集'':
julia> using DataFrames
julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])
如何删除A列中的1
这样做的最佳代码是什么?
谢谢
答案 0 :(得分:2)
如果数据在矢量中,则可以使用过滤器:
julia> data = rand(collect(1:100), 30); println(data);
[82, 80, 63, 6, 39, 44, 80, 80, 83, 58, 68, 87, 49, 40, 19, 87, 48, 19, 4, 80, 51,
82, 37, 2, 74, 90, 19, 68, 47, 11]
julia> filtered = filter(x -> x < 75, data); println(filtered);
[63, 6, 39, 44, 58, 68, 49, 40, 19, 48, 19, 4, 51, 37, 2, 74, 19, 68, 47, 11]
如果数据在数据框中,则可以按列值过滤行:
julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])
4×2 DataFrame
│ Row │ A │ B │
│ │ Int64 │ String │
├─────┼───────┼────────┤
│ 1 │ 1 │ M │
│ 2 │ 2 │ F │
│ 3 │ 3 │ F │
│ 4 │ 4 │ M │
julia> df2 = filter(x -> x.A != 1, df)
3×2 DataFrame
│ Row │ A │ B │
│ │ Int64 │ String │
├─────┼───────┼────────┤
│ 1 │ 2 │ F │
│ 2 │ 3 │ F │
│ 3 │ 4 │ M │
答案 1 :(得分:0)
您可以使用
julia> df = df[df.A .!= 1, :]
3×2 DataFrame
│ Row │ A │ B │
│ │ Int64 │ String │
├─────┼───────┼────────┤
│ 1 │ 2 │ F │
│ 2 │ 3 │ F │
│ 3 │ 4 │ M │
在.
之前的!=
用于向量化操作,而:
用于返回所有列。如果您还想对列进行过滤,则可以传递所需列的向量,而不是: