pandas.apply()与lambda的复杂度

问题描述 投票:0回答:1

[你好,我想知道这段代码的复杂度表示法是大O,df1有N行,df2有M行,M << N。将在set(df2.var0)中搜索x中的var_ref。这等于N*N == O(n^2) ??

df1['var1'] = df1['var_ref'].apply(lambda x: True if x in df2.var0.unique() else False) * 1
python pandas performance lambda time-complexity
1个回答
0
投票

应为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行)

© www.soinside.com 2019 - 2024. All rights reserved.