我有一个包含 100 万行的数据框。我有一个函数(我无法矢量化)应用于每一行。我研究了 swifter,它承诺利用多个进程来加速计算。然而,在 8 核机器上,情况并非如此。
知道为什么吗?
def parse_row(n_print=None):
def f(row):
if n_print is not None and row.name % n_print == 0:
print(row.name, end="\r")
return Feature(
geometry=Point((float(row["longitude"]), float(row["latitude"]))),
properties={
"water_level": float(row["water_level"]),
"return_period": float(row["return_period"])
}
)
return f
In [12]: df["feature"] = df.swifter.apply(parse_row(), axis=1)
Dask Apply: 100%|████████████████████████████████████████| 48/48 [01:19<00:00, 1.65s/it]
In [13]: t = time(); df["feature"] = df.apply(parse_row(), axis=1); print(int(time() - t))
46