[你好,我想知道这段代码的复杂度表示法是大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
应为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行)