I have two Pandas frames, one quite large (30,000+ lines) and one much smaller (100+ lines).
dfA looks something like this:
XY ONSET_TIME COLOUR 0 104 78 1083 6 1 172 78 1083 16 2 240 78 1083 15 3 308 78 1083 8 4 376 78 1083 8 5 444 78 1083 14 6 512 78 1083 14 ... ... ... ... ...
dfB looks something like this:
TIME XY 0 7 512 350 1 1722 512 214 2 1906 376 214 3 2095 376 146 4 2234 308 78 5 2406 172 146 ... ... ... ...
I want every row in dfB to find a row in dfA, where the values โโof the columns X and Y are equal. And this is the first line, where the value of dfB ['TIME'] is greater than dfA ['ONSET_TIME'] and return the value of dfA ['COLOR'] for this line.
dfA is a display update, where X and Y are the coordinates of the elements on the display and therefore are repeated for each other ONSET_TIME (for each ONSET_TIME value, there are 108 coodinates pairs).
There will be a few lines where X and Y in two frames of data are equal, but I need one that also matches the time.
I did this using for loops, and if the instructions just see that it can be done, but obviously, given the size of the data, it takes a very long time.
for s in range(0, len(dfA)): for r in range(0, len(dfB)): if (dfB.iloc[r,1] == dfA.iloc[s,0]) and (dfB.iloc[r,2] == dfA.iloc[s,1]) and (dfA.iloc[s,2] <= dfB.iloc[r,0] < dfA.iloc[s+108,2]): return dfA.iloc[s,3]