我有包含一些字串值的列的資料框。
col1|col2
---------
aaa |bbb
ccc |ddd
aaa |ddd
eee |fff
我必須獲取{aaa,ddd}每列中存在的允許值 ( ) 的數量。
cond = "`col1` = 'aaa' OR `col1` = 'ddd'"
dataframe.where(F.expr(cond)).count()
通過這種方式,我們得到了所需的值。我們正在遍歷所有列并對每一列執行此操作。
當列數增加到 2000 時,這種方法需要幾個小時來處理。
是否有更好更快的方法來并行處理所有列?
uj5u.com熱心網友回復:
一種替代方法是在 Python 中使用串列推導對資料框的所有列應用相同的條件
import pyspark.sql.functions as F
ok_values = ['aaa', 'ddd']
dataframe = dataframe.select(
*[F.sum((F.col(c).isin(ok_values)).cast('integer')).alias(c) for c in dataframe.columns]
)
dataframe.show()
---- ----
|col1|col2|
---- ----
| 2| 2|
---- ----
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416364.html
標籤:
