jjzjj

scala - 星火笔记本 : How can I filter rows based on a column value where each column cell is an array of strings?

coder 2024-01-09 原文

我有一个巨大的数据框,其中“类别”列具有企业的各种属性,即是否是餐厅、洗衣服务、迪斯科舞厅等。我需要的是能够 .filter数据框,以便可以看到包含 Restaurant 的每一行。这里的问题是“类别”是一个字符串数组,其中一个单元格可能类似于:“餐馆、食物、夜生活”。有任何想法吗? (Scala [2.10.6] Spark [2.0.1] Hadoop [2.7.2])

我已经尝试过 SQL 风格的查询,例如:

val countResult = sqlContext.sql(
   "SELECT business.neighborhood, business.state, business.stars, business.categories 
    FROM business where business.categories == Restaurants group by business.state"
).collect() 
display(countResult) 

dfBusiness.filter($"categories" == "Restaurants").show()

dfBusiness.filter($"categories" == ["Restaurants"]).show() 

我想我可能需要遍历每个单元格,但我不知道该怎么做。

有什么想法吗?

最佳答案

functions library对于处理 DataFrame 中的列非常有帮助。在这种情况下,array_contains 应该提供您需要的内容:

dfBusiness.filter(array_contains($"categories", "Restaurants"))

这会过滤掉 categories 列的数组中没有“Restaurants”元素的所有行。

关于scala - 星火笔记本 : How can I filter rows based on a column value where each column cell is an array of strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313859/

有关scala - 星火笔记本 : How can I filter rows based on a column value where each column cell is an array of strings?的更多相关文章

随机推荐