Код: Выделить всё
import polars as pl
import numpy as np
rng = np.random.default_rng()
df = pl.DataFrame([
pl.Series('a', rng.normal(size=10_000_000)),
pl.Series('b', rng.normal(size=10_000_000)),
])
df.sort('a', 'b').head(1)
Код: Выделить всё
df.lazy().sort('a', 'b').head(1).collect()
Обновить
Благодаря ответу ΩΠΟΚΕΚΡΥΜΜΕΝΟΣ я остановился на следующем решении:
Код: Выделить всё
def lexicographic_min(df):
columns = list(df.columns)
for col in columns:
if df.select(pl.col(col).is_null().any()).row(0)[0]:
df = df.filter(pl.col(col).is_null())
else:
df = df.filter(pl.col(col) == pl.col(col).min())
return df.row(0)
def lexicographic_max(df):
columns = list(df.columns)
for col in columns:
df = df.filter(pl.col(col) == pl.col(col).max())
return df.row(0)
Подробнее здесь: https://stackoverflow.com/questions/748 ... -in-polars