Python Pyspark dataframe获取至少一行满足条件的列列表
我有一个PySparkPython 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
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]