在Databricks工作时,我得到了一个数据帧,如下所示:

columns = ["a", "b", "c"]
data = [(True, True, True), (True, True, True), (True, False, True)]
df = spark.createDataFrame(data).toDF(*columns)
df.display()

enter image description here

我只想 Select 数据帧中并非所有值都为True的那些列. 在Pandas 中,我会用df['a'].all()来判断"a"列的所有值是否都为True.不幸的是,我在Py Spark中找不到类似的东西. 我找到了一个解决问题的办法,但似乎太复杂了:

df.select(*[column for column in df.columns 
            if df.select(column).distinct().collect() != 
            spark.createDataFrame([True], 'boolean').toDF(column).collect()])

该解决方案返回我想要的内容:

enter image description here

有没有一种更简单的方法来做这件事呢?

推荐答案

在Pyspark中,您也可以try 这样做,而不需要在每次迭代中创建新的数据帧.

df.select(*[column for column in df.columns 
            if ('False' in [str(i).split('=')[-1][:-1] for i in df.select(column).distinct().collect()])
            ]).show()

This is my sample data:

enter image description here

Result:

enter image description here

(Or)

df.select(*[column for column in df.columns 
            if (df.select(column).distinct().count()>=2 or df.select(column).distinct().collect()[0][0]!=True)
            ]).show()

enter image description here

Python相关问答推荐

除了Python之外,可以替代bare?

Plotly:如何更改Heatmap中彩色条的勾选文本

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

如果AST请求默认受csref保护,那么在Django中使用@ system_decorator(csref_protect)的目的是什么?

如何终止带有队列的Python进程?+ 队列大小的错误?

将numpy数组存储在原始二进制文件中

try 与gemini-pro进行多轮聊天时出错

如何使用symy打印方程?

从numpy数组和参数创建收件箱

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

运输问题分支定界法&

如何使用Python以编程方式判断和检索Angular网站的动态内容?

Python—从np.array中 Select 复杂的列子集

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

python中的解释会在后台调用函数吗?

在Python中使用if else或使用regex将二进制数据如111转换为001""

在极中解析带有数字和SI前缀的字符串

交替字符串位置的正则表达式

Odoo16:模板中使用的docs变量在哪里定义?

比Pandas 更好的 Select