如何在Julia的DataFrame中不区分大小写搜索指定列的特定词汇
在RDatasets中不区分大小写查找数据集
我在使用RDatasets包查找特定数据集时遇到了麻烦——这个包里包含763个带标识的数据集,很难确认目标数据集是否存在。比如我知道有一个食品相关的数据集,但不清楚确切名称,第一次搜索小写的"food"没有返回结果:
using RDatasets, DataFrames # 调用包内所有数据集的信息 Rdatasets = RDatasets.datasets(); Rdatasets[occursin.("food", Rdatasets.Title), :] # 0×5 DataFrame # Row │ Package Dataset Title Rows Columns # │ String15 String31 String Int64 Int64 # ─────┴────────────────────────────────────────────
直到我尝试搜索大写的"Food"才找到目标数据集:
Rdatasets[occursin.("Food", Rdatasets.Title), :] # 1×5 DataFrame # Row │ Package Dataset Title Rows Columns # │ String15 String31 String Int64 Int64 # ─────┼───────────────────────────────────────────────────────────────────────── # 1 │ Ecdat BudgetFood Budget Share of Food for Spanish… 23972 6
反复调整关键词的大小写非常繁琐,以下是两种可以在Rdatasets的Title列中不区分大小写查找包含"food"词汇的方法:
方法1:统一转换文本大小写后匹配
将Title列的所有文本和搜索关键词统一转换为小写(或大写),再使用occursin进行匹配,彻底消除大小写差异的影响:
using RDatasets, DataFrames rdatasets = RDatasets.datasets() # 统一转为小写后匹配 food_datasets = rdatasets[occursin.(lowercase("food"), lowercase.(rdatasets.Title)), :]
方法2:使用正则表达式的不区分大小写模式
利用Julia正则表达式的(?i)标记开启不区分大小写模式,写法更简洁:
# 通过正则表达式忽略大小写匹配 food_datasets = rdatasets[occursin.(r"(?i)food", rdatasets.Title), :]
两种方法都能直接筛选出所有标题中包含"food"(无论大小写形式)的数据集,无需反复尝试不同的关键词大小写。
内容的提问来源于stack exchange,提问作者Shayan
相关产品推荐
相关产品推荐

