【发布时间】:2019-07-11 11:10:30
【问题描述】:
我需要根据所选值列表的处理来更新熊猫数据框的列(下面的代码中的df0['parcels'].values)。该代码运行良好,但很长,因为所选值的列表相当长,有 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])
【问题讨论】:
-
我们能否有重复的宗地值,这些值可能在不同的迭代中重叠?
-
@RomanPerekhrest:不,“df0['parcels'].values”中的每个值都是唯一的。 df0['parcels'].values 的每个值都是 1 到 3 个像素,搜索范围 (par = tmp[dst ) df0['parcels'].values 中的值不能是 df0['parcels'].values 中另一个值的模式。
标签: python pandas numpy parallel-processing