我可以通过执行以下操作,根据数组字段中是否存在特定值来过滤Spark数据帧(在PySpark中):
from pyspark.sql.functions import array_contains
spark_df.filter(array_contains(spark_df.array_column_name, "value that I want")).show()
有没有办法获得数组中项目所在位置的索引?似乎应该存在,但我找不到它。
在spark 2.4+中,有以下array_position功能:
df = spark.createDataFrame([(["c", "b", "a"],), ([],)], ['data'])
df.show()
from pyspark.sql.functions import array_position
df.select(df.data, array_position(df.data, "a").alias('a_pos')).show()
来自文档的说明:
仅定位给定数组中给定值的第一次出现的位置;
该位置不是基于零的,而是基于1的索引。如果在数组中找不到给定值,则返回0。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。