Фильтрация более 100 столбцов pyspark df при одном и том же условии

#python #pyspark

Вопрос:

У меня есть pyspark df с 200 столбцами, который на самом деле содержит процент изменений с предыдущего месяца по текущий месяц. Мне нужно выяснить, что df со всеми столбцами имеет изменение более 10% в одном запросе фильтра или может использовать какой-то другой.

Общая идея

 df=df.filter(c for c in df.columns if df.c>10)
 

Комментарии:

1. есть ли у вас веские причины не принять мой ответ ? Если что-то не так, ты можешь сказать мне, я все исправлю.

2. Привет, Стивен, я попробовал, но не получил ответа, как ожидалось. Спасибо

Ответ №1:

Просто сделайте это :

 for col in df.columns:
    df = df.filter(df[col]>10)
 

другой способ :

 from functools import reduce

df = reduce(
    lambda a,b: a.filter(df[b]>10),
    df.columns,
    df
)
 

и еще один :

 from pyspark.sql import functions as F
from functools import reduce

where_condition = reduce(
    lambda a,b: a amp; b,
    [F.col(col)>10 for col in df.columns]
)

df.where(where_condition)