pandas数据处理优化过程记录

发布时间:2024年01月09日

问题现状:数据量60w条的dataframe,需要进行一些条件判断和计算,一般为满足某条件的则进行加减乘除计算,不满足的则为0,比如:

result_frame['aaa'] = np.vectorize(lambda x, y: 0 if y == 0 else x / y)(
        base_frame['bbb'], base_frame['ccc'])

但是不知道为什么,使用这种方法进行计算时,有一些数据明明手动计算出来是有数值 ,但是上述代码计算出来是0,这块研究了下大概是向量偏移的问题,后来也没有深究就直接换方法处理了。

解决历程:

1.使用apply方法,好处是算出来的结果和手动计算是一致的,但是apply方法相当于是逐行进行计算的,导致计算时间大打折扣,计算完大概需要15分钟

ps: 最后的axis不要忘记写了,否则会报错

result_frame['aaa'] = base_frame.apply(lambda row: 0 if row['ccc'] == 0 else row['bbb'] / row['ccc'], axis=1)

2.为了解决代码执行效率问题,apply方法注定要被抛弃,后来有发现有一个方法可以实现if相同的效果:where语句,上述代码可以修改成:

result_frame['aaa'] = (b
文章来源:https://blog.csdn.net/qq_35204012/article/details/135467725
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。