Сложность pandas .apply () с лямбда - PullRequest
1 голос
/ 09 марта 2020

Здравствуйте. Хотелось бы узнать, как этот код обозначен как сложность. O, df1 имеет `` N строк и df2 имеет M строк, M << N. Evry x in var_ref будет найден в наборе (df2.var0). это равно N*N == O(n^2) ??

df1['var1'] = df1['var_ref'].apply(lambda x: True if x in df2.var0.unique() else False) * 1

1 Ответ

1 голос
/ 09 марта 2020

Должно быть O (N * M). С M число уникальных в df2.

И вы должны сохранить уникальный список где-нибудь, чтобы не вычислять его каждый раз.

u = df2.var0.unique()
df1['var1'] = df1['var_ref'].apply(lambda x: True if x in u else False) * 1

Я передаю от 159 мс до 5 мс (600 строк )

...