#python #pandas #multiprocessing
#python #pandas #многопроцессорная обработка
Вопрос:
У меня есть фрейм данных, который содержит миллион строк и почти 100 функций. Мне нужно сначала преобразовать их в строку, а затем удалить почти 17 объектов. Затем мне нужно добавить столбец в фрейм данных, этот столбец называется pred . Методология, которую я добавляю в этот столбец, заключается в группировании строк по их функции «Reta», если -1 найдено, все строки с этим классом будут иметь значение pred -1, иначе это будет 1; это можно сделать с помощью этого кода:
#getting the prediction
hs_p={}
for i in range(len(classes)):
class_name=classes[i]
#this can be rewritten 3shan law l2aina -1 n-stop bdl ma n-check kolo
check=df.loc[df['CLUSTER'] == class_name]['Reta'].values.tolist()
if (-1 in check):
hs_p[class_name]=-1
else:
hs_p[class_name]=1
hs_p_col=[]
print("prediction done")
#Adding the prediction column to the df
for i in hs_p:
df.loc[df['CLUSTER'] == i, 'pred'] = hs_p[i]
Проблема в том, что данные очень большие, и мне потребовалось много времени для запуска, а результата все еще нет. Я думал о выполнении распараллеливания с использованием многопроцессорной библиотеки в python. Однако я понимаю, что многопроцессорная обработка делит фрейм данных на фрагменты, поэтому в первом фрагменте будут некоторые строки класса, а в другом фрагменте будут остальные строки класса, поэтому столбец pred не будет выполнен точно. Есть идеи о том, как это сделать?