【问题标题】:DataFrames Find rows (and index) satisfying a condition via expressionDataFrames 通过表达式查找满足条件的行(和索引)
【发布时间】:2015-04-30 08:10:48
【问题描述】:

给定一个 DataFrame 和一个表达式,我希望能够使用这个表达式对 DataFrame 进行子集化。我还想收到索引向量,告诉我哪些行满足条件。我举个例子:

df = DataFrame(x1 = 1:3, x2 = [2, 1, 2],x3 = [22, 21, 20])
ex=:((x3 .< 22) & (x2 .== 2))

df1=df[(df[:x3].<22) & (df[:x2].==2),:]
idx=(df[:x2].==2) & (df[:x3].<22)

是否可以使用 Expression ex 获取 df1 和 idx? 我认为 DataFrames 的“with”功能曾经这样做过:idx=with(df,ex) 现在有https://github.com/JuliaStats/DataFramesMeta.jl,但是我找不到合适的功能。

谢谢

【问题讨论】:

  • 根据这个讨论groups.google.com/forum/#!msg/julia-users/GU3Bxr0zM3g/… 方法df[:((x3 .&lt; 22) &amp; (x2 .== 2)), :] 应该工作(或在某些时候工作)此外,这里github.com/JuliaLang/julia-tutorial/blob/master/DataFrames/… 提到了一个子集函数。但它似乎不适用于我的安装,它既不返回我需要的索引向量
  • 我用 DataFramesMeta 尝试了一些东西,但效果并不令我满意。最后一行产生错误。另外,我不知道如何获取与表达式匹配的行的索引向量。 exx=:((:x3.&lt;22) &amp; (:x2.==2)); out=@where(df,(:x3.&lt;22) &amp; (:x2.==2)); out2=@where(df,$(exx))$;

标签: expression dataframe subset julia


【解决方案1】:

which() 函数可以帮助获取满足条件的数据帧行索引

示例:sel_ids 2 | x2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2019-10-07
    • 2013-11-15
    • 2021-02-01
    • 2013-10-19
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多