如何解决加快DataFrame .mask迭代速度
是否有比使用.mask()更快的方法来对某些DataFrame列执行条件计算?下面显示的代码似乎可以正常工作,但是当使用大型数据集时,它可能会变慢。
b
解决方法
有多种解决方法,但是简单的方法是使用lambda:
df[column].apply(lambda x: 1/x if x != 0 else x)
jupyter笔记本中带有计时的完整代码:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(-50,50,100))
%timeit df[0].mask(df[0] !=0,1/df[0])
%timeit df[0].apply(lambda x: 1/x if x != 0 else x)
我的机器上哪个产量:
1.58 ms ± 6.57 µs per loop (mean ± std. dev. of 7 runs,1000 loops each)
324 µs ± 642 ns per loop (mean ± std. dev. of 7 runs,1000 loops each)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。