Я пытался найти векторизованный способ получения индекса первого значения в большом столбце (> 500 тыс. Строк), который больше или равен каждому значению в более коротком столбце (~ 9 тыс. Строк).
В настоящее время я перебираю каждое значение в более коротком столбце и сравниваю его со всем большим столбцом. Количество петель = длина более короткого столбца.
np.random.seed(2)
veclong = np.random.randint(0, 1000, 100000)
vecshort = np.random.randint(0, 1000, 500)
dfShort=pd.DataFrame(data=vecshort/10000, columns=['Short'])
dfLong=pd.DataFrame(data=veclong/10000, columns=['Long'])
c1=len(dfShort)
out2=[];
for n1 in range(c1):
val=dfShort['Short'].iloc[n1]
dfAns=dfLong[dfLong>=val].dropna()
ans=dfAns['Long'].iloc[0]
idx=dfAns.index[0]
out=[ans,idx]
out2.extend([out])
out2=np.asarray(out2)
dfShort['Location']=out2[:,1]
dfShort['Value']=out2[:,0]