检查 PySpark Dataframe 中列的所有值是否相等

Zak*_*lab 2 python pyspark

我必须删除不向数据集添加信息的列,即所有条目中具有相同值的列。

我设计了两种方法来做到这一点

  1. 使用最大值和最小值的方法:
for col in df.columns:
    if df.agg(F.min(col)).collect()[0][0] == df.agg(F.max(col)).collect()[0][0]:
        df = df.drop(col)
Run Code Online (Sandbox Code Playgroud)
  1. 另一种,使用不同和计数:
for col in df.columns:
    if df.select(col).distinct().count() == 1:
        df = df.drop(col)
Run Code Online (Sandbox Code Playgroud)

有没有更好、更快或更直接的方法来做到这一点?

小智 5

df = df.drop(*(col for col in df.columns if df.select(col).distinct().count() == 1))
Run Code Online (Sandbox Code Playgroud)