【问题标题】:Making subset of Julia dataframe with values greater than x使值大于 x 的 Julia 数据帧的子集
【发布时间】:2018-06-12 13:42:07
【问题描述】:

例如,如果我按如下方式创建数据框

X = rand(10, 10)
X = convert(DataFrame, X)

如何显示值 > 0.5

提前致谢。

【问题讨论】:

  • 不完全,不适用于 Dataframes。 X[X .> 0.5] 会产生错误
  • 你能更准确地说你想得到什么吗?如果您想将整个 DataFrame 视为同质对象,您始终可以通过编写 Matrix(df) 将其转换回矩阵,然后对其进行处理。
  • 使用您的代码,您有一个包含 10 行和 10 列的表。然后,您可以选择单个行,但您必须根据内容进行选择。所有列是否 > 0.5?至少在一个?在第一列?
  • 您期待什么样的结果?一个数据框?我想知道 IndexedTables 是否不是更好的数据结构。
  • Query.jl 在这里也可能有用。

标签: dataframe conditional julia subset


【解决方案1】:

我们应该使用最实用的工具来完成我们想要的。我认为DataFrame 在这里用处不大,所以我建议您将其转换回数值数组。当然,您不打算在随机数数组上使用它。

using DataFrames

X = rand(10, 10)
X = convert(DataFrame, X)

X = convert(Matrix, X)
ind = X .> 0.5
vals = X[ind] 

ind
vals

#=
Main> ind
10×10 BitArray{2}:
 false  false   true   true   true   true  false  false   true   true
  true  false  false   true  false  false   true   true  false  false
  true   true  false   true  false   true   true  false  false   true
 false   true  false   true   true  false  false   true   true  false
  true  false   true   true   true   true  false   true   true   true
  true  false  false   true   true   true   true   true   true   true
 false  false   true  false  false   true   true  false  false   true
  true   true  false   true   true  false   true   true  false  false
 false  false  false   true   true   true  false   true  false  false
  true   true   true  false   true   true   true  false  false  false

Main> vals
57-element Array{Float64,1}:
 0.52951
 0.743512
 0.576547
 0.697369
 0.951203
 0.656204
 ⋮
 0.803584
 0.714883
 0.730805
 0.529729
 0.845263 
 =#

您可以查看ind中原始数组中子集的位置以及vals中的实际值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2015-03-19
    • 1970-01-01
    • 2018-07-08
    • 2022-05-21
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多