PySpark:如何检查数据帧中是否存在字符串值列表,并将值打印到列表中

时间:2018-08-02 17:08:37

标签: python apache-spark pyspark apache-spark-sql

我有一个df NAMES ,如果我通过display(NAMES)输出,则在其中:

NAMES

John

Sarah

Michael

Sean

我还有一个列表学生print(students)

{John,Alan,Andy}

问题

如何基于此列表(学生),如何在df中使用“ NAMES”列进行循环,然后将列表中以及DF中的学生姓名输出到另一个列表中。

列表的预期输出:“约翰”

我已经尝试

list2 = []
for i in NAMES:
     for g in students:
        if i == g:
          list2.append(i)

但是我最终遇到一个错误,如何通过pyspark来实现呢?

谢谢。

1 个答案:

答案 0 :(得分:1)

通常,pyspark中的数据循环不是很有效。尽可能使用本机pyspark函数。对于您的特定问题,您可以使用filter函数,该函数将按学生列表中的名称过滤您的DataFrame:

df_names.filter(col("name").isin(students)).select("name")

在您的示例中,唯一的返回值将是John。