删除Julia列中的特定数据

时间:2019-05-09 19:46:04

标签: julia

我正在使用Julia分析我的数据,我的数据中有一些异常值,因此我想删除它们;有一些数据;例如75以上的数字;我想排除它们。 例如,使用DataFrames.jl,df是一个数据集'':

julia> using DataFrames
julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])

如何删除A列中的1

这样做的最佳代码是什么?

谢谢

2 个答案:

答案 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      │

.之前的!=用于向量化操作,而:用于返回所有列。如果您还想对列进行过滤,则可以传递所需列的向量,而不是: