如何筛选包含空格的数据?Spark DataFrame葡萄列处理示例
筛选DataFrame中包含空格的grape列数据
我需要筛选出DataFrame里grape列中包含空格的数据(比如"chenin blanc"这类由两个名称组成的条目),尝试的代码如下:
df_04 = vinos_df.select(countDistinct("name")). df_041= df_04.filter(df_04.grape.like("% %")).show()
问题分析
你的代码有两处错误:
- 第一行末尾多了个点号,会触发语法错误
select(countDistinct("name"))只保留了name列的去重计数结果,后续的df_04中不存在grape列,无法执行筛选操作
正确解决方法
方法1:直接筛选原DataFrame的目标行
如果要保留原DataFrame的所有列,直接对vinos_df进行筛选:
# 筛选grape列包含空格的行 filtered_df = vinos_df.filter(vinos_df.grape.like("% %")) # 查看结果 filtered_df.show()
方法2:获取去重后的目标grape值
如果需求是提取去重后包含空格的grape条目:
# 提取grape列并去重,再筛选包含空格的内容 distinct_grapes_with_space = vinos_df.select("grape").distinct().filter("grape like '% %'") distinct_grapes_with_space.show()
补充:正则表达式筛选(更灵活)
也可以用正则表达式匹配空格,效果与like一致:
from pyspark.sql.functions import col filtered_df = vinos_df.filter(col("grape").rlike(" ")) filtered_df.show()
内容的提问来源于stack exchange,提问作者Jairo Villa
相关产品推荐
相关产品推荐

