Есть ли у Polars идиоматический способ извлечь информацию из середины ленивой цепочки выражений?Python

Программы на Python
Anonymous
Есть ли у Polars идиоматический способ извлечь информацию из середины ленивой цепочки выражений?

Сообщение Anonymous »

Я только начал использовать Polars, и мне нравятся его функции ленивого связывания! Но я застрял на том, что, как мне казалось, было бы простым шаблоном - я хочу объединить несколько операций последовательно, получая некоторую сводную статистику после каждой операции. Вот тривиальный пример использования Pandas:

Код: Выделить всё

df = pd.read_csv("my.csv")
l1 = len(df)
df = df[df.A != 0]
l2 = len(df)
print(f"{l1}, {l2}")
Однако набор данных может оказаться слишком большим для размещения в оперативной памяти, поэтому я хочу использовать потоковый LazyFrame вместо DataFrame. Я хочу выразить своего рода «разветвленный» LazyFrame с несколькими вызовами «.collect()», которые все будут оцениваться одновременно.
Я вижу два способа, которые помогут это сделать. не совсем не работает. Вы могли бы выразить это с помощью двух разных операций сбора, но для этого решения потребуется дважды прочитать CSV:

Код: Выделить всё

df = pl.scan_csv("my.csv")
l1 = df.select(pl.len()).collect().item()
l2 = df.filter(pl.col("A") != 0).select(pl.len()).collect().item() # 

Подробнее здесь: [url]https://stackoverflow.com/questions/78679189/does-polars-have-an-idiomatic-way-to-extract-information-from-the-middle-of-a-la[/url]

Вернуться в «Python»