Для некоторых существует функция .list.func (например, list.mean), однако для тех, у которых нет специальной функции, я считаю, что я должен использовать list.eval.
Для следующих примеров данных:
Код: Выделить всё
import numpy as np
import polars as pl
df = pl.DataFrame({
'a': [1,10,1,.1,.1, np.NAN],
'b': [2, 8,1,.2, np.NAN,np.NAN],
'c': [3, 6,2,.3,.2, np.NAN],
'd': [4, 4,3,.4, np.NAN,np.NAN],
'e': [5, 2,3,.5,.3, np.NAN],
}, strict=False)
Похоже, что list.eval возвращает список (который, я полагаю, является более общим), поэтому мне нужно вызвать .explode в результирующем списке из 1 элемента, чтобы получить одно значение.
Полученный столбец принимает имя первого столбца, поэтому мне затем нужно вызвать .alias, чтобы придать ему более содержательный смысл. имя.
Код: Выделить всё
df.select(
pl.concat_list(
pl.all().fill_nan(None)
)
.list.eval(pl.element().quantile(0.25))
.explode()
.alias('q1')
)
Подробнее здесь: https://stackoverflow.com/questions/778 ... -dataframe
Мобильная версия