在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",)]

如果你做很多这样的查找,速度会快得多。

最新更新