Python Pyspark dataframe获取至少一行满足条件的列列表

Python Pyspark dataframe获取至少一行满足条件的列列表,python,apache-spark,dataframe,pyspark,Python,Apache Spark,Dataframe,Pyspark,我有一个PySparkDataFrame Col1 Col2 Col3 0.1 0.2 0.3 我想得到至少一行满足条件的列名,例如一行大于0.1 在这种情况下,我的预期结果应该是: [Co2 , Co3] 我不能提供任何代码,因为我真的不知道怎么做。只需计算满足谓词的项(内部选择)并处理结果: from pyspark.sql.functions import col, count, when [c for c, v in df.select([ count(when(col

我有一个PySpark
DataFrame

Col1 Col2 Col3
0.1  0.2  0.3
我想得到至少一行满足条件的列名,例如一行大于0.1

在这种情况下,我的预期结果应该是:

[Co2 , Co3]

我不能提供任何代码,因为我真的不知道怎么做。

只需计算满足谓词的项(内部
选择
)并处理结果:

from pyspark.sql.functions import col, count, when

[c for c, v in df.select([
    count(when(col(c) > 0.1, 1)).alias(c) for c in df.columns
]).first().asDict().items() if v]
逐步:

  • 聚合(
    DataFrame
    ->
    DatFrame
    ):

    DataFrame[\u 1:bigint,\u 2:bigint,\u 3:bigint]
    
  • 收集
    第一行

    a_row = counts.first()
    
    行(_1=0,_2=1,_3=1)
    
  • 转换为Python
    dict

    a_dict = a_row.asDict()
    
    {u1':0','u2':1','u3':1}
    
  • 并在值为truthy时,在其项上迭代,保留键:

    [c for c, v in a_dict.items() if v]
    
    或显式检查计数:

    [c for c, v in a_dict.items() if v > 0]
    
[c for c, v in a_dict.items() if v > 0]