Оптимальный способ запуска функции во всех строках Polars DataFramePython

Программы на Python
Ответить
Anonymous
 Оптимальный способ запуска функции во всех строках Polars DataFrame

Сообщение Anonymous »

Я применяю относительно сложную функцию к среднему кадру данных размером около 5 000 строк, однако это занимает много времени (около 10 минут), а различные ядра работают только с загрузкой около 30 %.
Как я могу минимизировать время выполнения и обеспечить 100 % загрузку всех ядер ЦП?
Является ли такой способ вызова функции и упаковки/распаковки результатов наиболее подходящим?
class my_class():
def __init__(self, bla:float=np.nan):
pass

def my_complex_function(self, param_A:float=np.nan, ...):
bla bla
return {f"{prefix_name}_result_A":result_A,
f"{prefix_name}_result_B":result_B,
f"{prefix_name}_result_B":result_C,
... }

my_object = my_class(999.9)
float_param_D = 999.9
float_param_E = 999.9
float_param_F = 999.9
prefix_name = "column_name_prefix"

df = df.with_columns(pl.struct('float_param_A',
'float_param_B',
'float_param_C').map_elements(lambda x:
my_object.my_complex_function(
param_A =x['float_param_A'],
param_B =x['float_param_B'],
param_C =x['float_param_C'],
param_E =float_param_E,
param_F =float_param_F,
param_D =float_param_D,
float_param_G=0,
prefix_name =prefix_name )
).alias('calculation_results')
).unnest('calculation_results')


Подробнее здесь: https://stackoverflow.com/questions/767 ... -dataframe
Ответить

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

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

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

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

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