我需要基于对所选值列表的处理(下面代码中的df0['parcels'].values
)来更新pandas dataframe的列。代码运行良好,但很长,因为所选值的列表相当长,有45000个值。此代码需要5小时才能完成任务。你知道吗
因为对每个选定值的处理是独立的。为了提高速度,我想尝试将其并行化。你知道吗
import numpy as np
import pandas as pd
from scipy.ndimage import distance_transform_edt as edt
for i in df0['parcels'].values:
y, x = np.where(parcels == i)
tmp = parcels[np.min(y) - 5:np.max(y) + 6, np.min(x) - 5:np.max(x) + 6]
dst = edt(tmp, sampling=r_parcels)
par = tmp[dst <= 20]
par = par[par != -9999]
mod, cnt = ss.mode(par)
df['parcels'] = df['parcels'].replace(i, mod[0])
您可以使用多处理中提供的池进行并行化。你知道吗
您也可以使用pool.map\u异步()或pool.apply\u异步()因为map()正在阻塞。一般来说,并行化的逻辑保持不变。你知道吗
相关问题 更多 >
编程相关推荐