我比较来自2个大数据框的记录,其中包含3列(X,Y,Z),并创建一个结果数据框,该记录记录了X和Y彼此靠近(<0.05)的配对数据它适用于少量数据,不幸的是,我大约有33,000-35,000行的行实际上是无限循环的。还有其他方法可以使循环更快吗?
import pandas as pd
import numpy as np
n=35000
DF1=pd.DataFrame({'X1': np.random.randn(n),'Y1': np.random.randn(n),'Z1': np.random.randn(n)})
DF2=pd.DataFrame({'X2': np.random.randn(n),'Y2': np.random.randn(n),'Z2': np.random.randn(n)})
Result=pd.DataFrame(columns=['X1','Y1','Z1','X2','Y2','Z2'])
i=0
for j in DF1.index:
for k in DF2.index:
if abs(DF1.X1[j]-DF2.X2[k])<0.05:
if abs(DF1.Y1[j]-DF2.Y2[k])<0.05:
Result.loc[i]=[DF1.X1[j]]+[DF1.Y1[j]]+[DF1.Z1[j]]+[DF2.X2[k]]+[DF2.Y2[k]]+[DF2.Z2[k]]
i+=1
我设法通过基于X范围值将DataFrame切成100个较小的部分并仅比较每个部分中的数据来解决此问题,我不想丢失部分之间的任何数据,因此我在范围和范围之间给出5%的重叠在顶部,稍后我将处理重复。