dataframe - 查找列值所在的行(类似于 pandas isin 或 R %in%)
问题描述
using CSV, DataFrames
iris = CSV.read(joinpath(dirname(pathof(DataFrames)),"..","test/data/iris.csv"))
head(iris)
6×5 DataFrame
│ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │ Species │
│ │ Float64⍰ │ Float64⍰ │ Float64⍰ │ Float64⍰ │ String⍰ │
├─────┼─────────────┼────────────┼─────────────┼────────────┼─────────┤
│ 1 │ 5.1 │ 3.5 │ 1.4 │ 0.2 │ setosa │
│ 2 │ 4.9 │ 3.0 │ 1.4 │ 0.2 │ setosa │
│ 3 │ 4.7 │ 3.2 │ 1.3 │ 0.2 │ setosa │
│ 4 │ 4.6 │ 3.1 │ 1.5 │ 0.2 │ setosa │
│ 5 │ 5.0 │ 3.6 │ 1.4 │ 0.2 │ setosa │
│ 6 │ 5.4 │ 3.9 │ 1.7 │ 0.4 │ setosa │
我想找到 Species 所在的所有行setosa
或virginica
。请注意,答案必须使用查找值数组来查找,因为我希望结果在查找任意多个值时起作用。
有一个叫做 indexin 的函数。它让我走到了一半:
iris[indexin(iris.Species ,["setosa", "virginica"])]
但是当我尝试使用它来建立索引时,结果是:
ERROR: ArgumentError: Only Integer values allowed when indexing by vector of numbers
解决方案
iris[ in.(iris[:Species],(["virginica","setosa"],)),: ]
额外的tuple
环绕["virginica","setosa"]
允许避免在搜索列表上广播。
推荐阅读
- node.js - GraphQL 多词键
- r - R 包开发检查、构建和安装运行时非常慢(由于 GitHub?)
- python - python apache-beam是如何向ES写入数据的,有API吗?
- javascript - JQuery 用图像向下滑动 div 不流畅
- sql - 列未出现在搜索谓词上
- botframework - 无法在 Azure 中发布 Bot Composer
- java - 在java中使用递归函数打印星
- docker - k3d 启动的 Docker 容器中的 Sysctl 修改
- java - 我想弄清楚我的代码有什么问题
- python - 如何将属性添加到任意对象python?