python 基于PySpark中的列值筛选行列表

pod7payv  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(172)

使用collect后,我有一个行列表。如何获得sample_label == 0处的“num_samples”值?也就是说,如何根据列值过滤行列表?

[Row(sample_label=1, num_samples=14398),
 Row(sample_label=0, num_samples=12500),
 Row(sample_label=2, num_samples=98230]
qncylg1j

qncylg1j1#

在收集 Dataframe 行之前,根据所需条件过滤 Dataframe 行:
第一个月

wyyhbhjk

wyyhbhjk2#

你的问题的一个可能答案是列表理解:

data = [Row(sample_label=1, num_samples=14398),
 Row(sample_label=0, num_samples=12500),
 Row(sample_label=2, num_samples=98230)]

filtered_data = [row.num_samples for row in data if row.sample_label == 0]

编辑:正如@RomanPerekhrest所说,收集之前先过滤。为什么?As per documentation
此方法仅应在预期结果数组较小时使用,因为所有数据都加载到驱动程序的内存中。
仅当您绝对确定确实需要以这种格式收集数据时,才收集数据。如果确实需要,请对数据进行大量过滤,以降低驱动程序节点因OOM异常而失败的可能性。

相关问题