我希望有效地使用pandas(或numpy)而不是for帶有if語句的嵌套循環(huán)來解決特定問題。這是一個玩具版本:假設(shè)我有以下兩個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)現(xiàn)在,我希望遍歷每個數(shù)據(jù)幀的每一行,并在滿足特定條件的情況下乘以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可以具有數(shù)百萬個條目,因此無法使用。我也不會做的我們pandas還是numpy有效的載體實現(xiàn)。有誰知道如何有效地向量化此嵌套循環(huán)?我覺得這段代碼類似于矩陣乘法,因此可以利用outer嗎?這if是我很難進入的條件,因為if邏輯需要將中的每個條目df1與中的所有條目進行比較df2。
如何向量化(使用pandas / numpy)而不是使用嵌套的for循環(huán)
寶慕林4294392
2021-03-30 17:14:42