只是用for循环来遍历数据框的每一行数据,在数据量有100w的情况下,需要一天的时间才能处理完数据,此处还以用线程池的方式来提高数据处理速度,但是效果还是不理想,速度依旧很慢
with ThreadPoolExecutor(max_workers=20) as pool:
for i in range(len(df)):
pool.submit(ev_info,i)
但是利用apply方法可以高效的提升的数据处理速度
def cl(c,x,y):
name = c[x]
ab = eval(c[y]).get(name)
print(ab)
return ab
上面c参数指当前处理的数据框,经过测试,利用apply方法可以将原本需要9h的数据处理工作,提升至10分钟内完成,简直太香了~
start = time.time()
df['g_i'] = df.head(1000).apply(cl, args=('legalPerson','manger_info'), axis=1)
print('进程结束')
print('columns:', df.columns)
print(df.loc[:, ['legalPerson','g_i']])
print(time.time()-start)