Как ускорить работу многократной фильтрации и создать столбцы с отфильтрованными значениями?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как ускорить работу многократной фильтрации и создать столбцы с отфильтрованными значениями?

Сообщение Anonymous »

Задача состоит в том, чтобы отфильтровать кадр данных Polars df с множеством условий, создать столбцы значений для каждого условия, а затем объединить все sub_df среди всех условий.

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

import polars as pl
from itertools import product

df = pl.DataFrame({"A": [31,32,73,24,15,26,57,98,79,10],
"B": [11,22,53,44,53,16,27,38,49,10],
"C": [41,12,23,44,25,46,27,48,29,10],
"D": [71,52,13,34,53,36,27,48,39,10],
"E": [81,82,63,24,15,56,47,68,49,10]})

a12_l = [[13,16], [12,72], [18,22]]
b12_l = [[11,13], [14,55], [22,55]]
c12_l = [[23,76], [13,65], [23,56]]
d12_l = [[21,42], [18,25], [25,35]]

pl.concat([df.filter((pl.col('A').is_between(a1,a2)) & (pl.col('B').is_between(b1,b2)) &
(pl.col('C').is_between(c1,c2)) & (pl.col('D').is_between(d1,d2))).\
with_columns(a1=a1, a2=a2, b1=b1, b2=b2, c1=c1, c2=c2, d1=d1, d2=d2)
for [a1, a2], [b1, b2], [c1, c2], [d1, d2] in product(a12_l, b12_l, c12_l, d12_l)])
df содержит миллионы строк, а комбинация фильтров достигает 200 000, поэтому весь процесс происходит довольно медленно.


Подробнее здесь: https://stackoverflow.com/questions/791 ... with-filte
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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