Python 如何以这种方式过滤数据帧,以将真或假返回到Pyspark中的特定条件?

Python 如何以这种方式过滤数据帧,以将真或假返回到Pyspark中的特定条件?,python,dataframe,apache-spark,pyspark,apache-spark-sql,Python,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我想创建一个数据帧,返回特定条件的False或True,它将替换pandas中的内置函数.all。我提供了一个预期的结果。提前谢谢 schema=StructType([ StructField('vin',StringType(),True),StructField('age',IntegerType(),True),StructField('var',IntegerType(),True),StructField('rim',IntegerType(),True),StructField('

我想创建一个数据帧,返回特定条件的False或True,它将替换pandas中的内置函数
.all
。我提供了一个预期的结果。提前谢谢

schema=StructType([
StructField('vin',StringType(),True),StructField('age',IntegerType(),True),StructField('var',IntegerType(),True),StructField('rim',IntegerType(),True),StructField('cap',IntegerType(),True),StructField('cur',IntegerType(),True)
])
数据=['tom',10,54,87,23,90],'nick',15,63,23,11,65],'juli',14,87,9,43,21]]
df=spark.createDataFrame(数据,模式)
df.show()
>>>
+----+---+---+---+---+---+
|vin |年龄|变量|边缘|帽|电流|
+----+---+---+---+---+---+
|汤姆| 10 | 54 | 87 | 23 | 90|
|尼克| 15 | 63 | 23 | 11 | 65|
|朱利| 14 | 87 | 9 | 43 | 21|
+----+---+---+---+---+---+
col_2=['age','var','rim']
df=df.选择(*col_2)
df.show()
>>>
+---+---+---+
|年龄| var | rim|
+---+---+---+
| 10| 54| 87|
| 15| 63| 23|
| 14| 87|  9|
+---+---+---+
df=df.过滤器(F.col(*col_2)==10)
#预期成果:
>>>
+---===+------+------+
|年龄| var | rim|
+------+------+------+
|真|假|假|
|假|假|假|
|假|假|假|
+------+------+------+

您可以对每列进行比较,然后选择所有列<不需要代码>过滤器

import pyspark.sql.functions as F

df2 = df.select([(F.col(c) == 10).alias(c) for c in col_2])

df2.show()
+-----+-----+-----+
|  age|  var|  rim|
+-----+-----+-----+
| true|false|false|
|false|false|false|
|false|false|false|
+-----+-----+-----+

您可以对每列进行比较,然后选择所有列<不需要代码>过滤器

import pyspark.sql.functions as F

df2 = df.select([(F.col(c) == 10).alias(c) for c in col_2])

df2.show()
+-----+-----+-----+
|  age|  var|  rim|
+-----+-----+-----+
| true|false|false|
|false|false|false|
|false|false|false|
+-----+-----+-----+