【发布时间】:2021-02-23 21:59:53
【问题描述】:
所以我有一个 PySpark 数据框,我想用两列的有效 对 的(长)列表进行过滤。
假设我们的数据框的名称是 df 和列 col1 和 col2:
col1 col2
1 A
2 B
3 1
null 2
A null
2 null
1 null
B C
我的有效配对列表为:flist=[(1,A), (null,2), (1,null)]
当我尝试使用 .isin() 函数(如下所示)时,它告诉我 .isin() 不适用于元组。
df.filter((df["col1"],df["col2"]).isin(flist))
通过连接两个字符串或为每对写下一个布尔表达式来解决此问题,但我有一长串有效对(很难变成布尔值)并且连接也不可靠,因为空值.使用 Python (df['col1'],df['col2']) in flist 也不起作用。
有没有 Pythonic/PySparkic 方式来做到这一点?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql filtering