У меня есть датафрейм с 1 миллионом строк. У меня есть одна функция (которую я не могу векторизовать), чтобы применить к каждой строке. Я посмотрел на 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