【发布时间】:2021-03-25 05:42:31
【问题描述】:
我有一个数据框,我想按以下条件过滤数据。
df = spark.createDataFrame([(101, 1, 2, 12, 34), (102, 1, 1, 45, 12), (103, 1, 34, 10, 0), (104, None, 2, 91, 76), (
105, 2, 67, 23, 54), (107, 34, 255, 234, 99), (109, None, 1, 23, 55)], ['ID', 'A', 'B', 'C', 'D'])
df.show()
+---+----+---+---+---+
| ID| A| B| C| D|
+---+----+---+---+---+
|101| 1| 2| 12| 34|
|102| 1| 1| 45| 12|
|103| 1| 34| 10| 0|
|104|null| 2| 91| 76|
|105| 2| 67| 23| 54|
|107| 34|255|234| 99|
|109|null| 1| 23| 55|
+---+----+---+---+---+
过滤条件
- 如果 A 列 = 1,则选择行
- 如果 A 列为空,则检查 B 列,如果 B 列 = 1,则选择行
预期输出
+---+----+---+---+---+
| ID| A| B| C| D|
+---+----+---+---+---+
|101| 1| 2| 12| 34|
|102| 1| 1| 45| 12|
|103| 1| 34| 10| 0|
|109|null| 1| 23| 55|
+---+----+---+---+---+
我的代码:
import pyspark.sql.functions as F
df = df.filter((F.col('A') ==1 )& (F.col('A').isNull()) & (F.col('B') ==1))
df.show()
我得到空的数据框。 有人能帮我吗。谢谢。
【问题讨论】: