python - Pyspark Dataframe从具有字符串作为元素列表的列中获取唯一元素

原文 标签 python dataframe pyspark spark-dataframe rdd

我有一个数据框(它是通过从天蓝色的多个blob加载创建的),其中有一列是ID列表。
现在,我希望从此整列中获得唯一ID的列表:

这是一个例子-

df - 
| col1 | col2 | col3  |
| "a"  | "b"  |"[q,r]"|
| "c"  | "f"  |"[s,r]"|


这是我的预期答复:

resp = [q, r, s]


知道如何到达那里吗?

我目前的方法是将col3中的字符串转换为python列表,然后以某种方式将其变平。

但是到目前为止,我还不能这样做。我尝试在pyspark中使用用户定义的函数,但它们仅返回字符串,而不返回列表。

FlatMap仅可在RDD上使用,而不能在Dataframe上使用,因此它们不可见。

也许我可以在从RDD到数据帧的转换过程中指定此方法。但不确定如何做到这一点。

最佳答案

这是仅使用DataFrame函数的方法:

df = spark.createDataFrame([('a','b','[q,r,p]'),('c','f','[s,r]')],['col1','col2','col3'])

df=df.withColumn('col4', f.split(f.regexp_extract('col3', '\[(.*)\]',1), ','))

df.select(f.explode('col4').alias('exploded')).groupby('exploded').count().show()

关于python - Pyspark Dataframe从具有字符串作为元素列表的列中获取唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47793412/

相关文章:

python - 根据列值是否在另一列中,将列添加到 PySpark DataFrame

python - 保存 Spark 模型摘要

python - Pandas :如何通过拆分从一个多索引级别向一个多索引添加级别?

python - 将分组后的列的多个值合并到python pandas中的一列中

python - 如何在 Pandas 数据框中创建带有百分比等的列

python - 如何在没有索引的 Pandas 中将数据框转换为字典

python-2.7 - 将重复记录合并为 pyspark 数据框中的单个记录

python - 如何使用 pyproject.toml 在可编辑模式下使用 pip 安装包?

python - 为什么我的GQL查询没有在我的GAE应用程序中返回任何结果?

python - numpy 矩阵技巧 - 逆时间矩阵的总和