为了账号安全,请及时绑定邮箱和手机立即绑定

如何向量化(使用pandas / numpy)而不是使用嵌套的for循环

如何向量化(使用pandas / numpy)而不是使用嵌套的for循环

宝慕林4294392 2021-03-30 17:14:42
我希望有效地使用pandas(或numpy)而不是for带有if语句的嵌套循环来解决特定问题。这是一个玩具版本:假设我有以下两个DataFrameimport pandas as pdimport numpy as npdict1 = {'vals': [100,200], 'in': [0,1], 'out' :[1,3]}df1 = pd.DataFrame(data=dict1)dict2 = {'vals': [500,800,300,200], 'in': [0.1,0.5,2,4], 'out' :[0.5,2,4,5]}df2 = pd.DataFrame(data=dict2)现在,我希望遍历每个数据帧的每一行,并在满足特定条件的情况下乘以val。这段代码适用于我想要的ans = []for i in range(len(df1)):    for j in range(len(df2)):        if (df1['in'][i] <= df2['out'][j] and df1['out'][i] >= df2['in'][j]):            ans.append(df1['vals'][i]*df2['vals'][j])np.sum(ans)但是,显然这是非常低效的,实际上,我的DataFrames可以具有数百万个条目,因此无法使用。我也不会做的我们pandas还是numpy有效的载体实现。有谁知道如何有效地向量化此嵌套循环?我觉得这段代码类似于矩阵乘法,因此可以利用outer吗?这if是我很难进入的条件,因为if逻辑需要将中的每个条目df1与中的所有条目进行比较df2。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 341 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号