我希望有效地使用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。
添加回答
举报
0/150
提交
取消