在 Julia DataFrame 中查找一行
Find a row in a Julia DataFrame
在 DataFrames.jl 的 DataFrame 中查找行的规范方法是什么?
例如,给定这个 DataFrame:
│ Row │ uuid │ name
│ │ String │ String
├──────┼──────────────────────────────────────┼──────────────────────────────
│ 1 │ 0efae8bf-39e6-5d65-b05d-c8947f4cee2a │ COSMA_jll
│ 2 │ 17ccb2e5-db19-44b3-b354-4fd16d92c74e │ CitableImage
给定名称“CitableImage”,检索 uuid 的最佳方法是什么?
我通常会使用:
filter(:name => ==("CitableImage"), df)
它会生成一个数据框,因为您可以有多个匹配行。
如果您确定只有一行会匹配,那么您也可以这样写:
df[only(findall(==("CitableImage"), df.name)), :]
(only
函数检查您是否只选择了一行)
如果你想使用索引获取数据框,你可以这样写:
df[df.name .== "CitableImage", :]
或
df[findall(==("CitableImage"), df.name), :]
最后我们还提供了 subset
函数,但是它的正常用例有点不同所以这里比 filter
:
更冗长
subset(df, :name => ByRow(==("CitableImage")))
如果您想进行多次查找并希望它们高效,那么最好执行以下操作:
gdf = groupby(df, :name)
然后做:
gdf[("CitableImage",)]
如果您进行多次此类查找,速度会快得多。
在 DataFrames.jl 的 DataFrame 中查找行的规范方法是什么?
例如,给定这个 DataFrame:
│ Row │ uuid │ name
│ │ String │ String
├──────┼──────────────────────────────────────┼──────────────────────────────
│ 1 │ 0efae8bf-39e6-5d65-b05d-c8947f4cee2a │ COSMA_jll
│ 2 │ 17ccb2e5-db19-44b3-b354-4fd16d92c74e │ CitableImage
给定名称“CitableImage”,检索 uuid 的最佳方法是什么?
我通常会使用:
filter(:name => ==("CitableImage"), df)
它会生成一个数据框,因为您可以有多个匹配行。
如果您确定只有一行会匹配,那么您也可以这样写:
df[only(findall(==("CitableImage"), df.name)), :]
(only
函数检查您是否只选择了一行)
如果你想使用索引获取数据框,你可以这样写:
df[df.name .== "CitableImage", :]
或
df[findall(==("CitableImage"), df.name), :]
最后我们还提供了 subset
函数,但是它的正常用例有点不同所以这里比 filter
:
subset(df, :name => ByRow(==("CitableImage")))
如果您想进行多次查找并希望它们高效,那么最好执行以下操作:
gdf = groupby(df, :name)
然后做:
gdf[("CitableImage",)]
如果您进行多次此类查找,速度会快得多。