#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)