我有两只大熊猫dataframes,一个相当大(30000+行)和一个小了很多(超过100行)。匹配行的一个数据帧的熊猫到另一个基于三列
的DFA看起来像:
X Y 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看起来像:
TIME X Y
0 7 512 350
1 1722 512 214
2 1906 376 214
3 2095 376 146
4 2234 308 78
5 2406 172 146
... ... ... ...
我想要做的就是在DFB每一行找到DFA行其中的值的X和Y列相等,并且在第一行,其中DFB的值[“TIME”]比DFA [“ONSET_TIME”]更大,此行返回DFA [“COLOR”]的值。
dfA代表显示器的刷新,其中X和Y是显示器上的项目坐标,并且对于每个不同的ONSET_TIME重复它们自己(每个ONSET_TIME值有108对协调对)。
会有多行,其中两个dataframes X和Y是相等的,但我需要的是时间太相匹配的。
我已经这样做了使用循环和if语句只是为了看看它可以做,但显然考虑到dataframes的大小这需要很长的时间。
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]
这真的很有帮助,谢谢,虽然我发现你最后的群组DF错过了原始DfB的一些值。 我试过了:filteredDF.sort('ONSET_TIME').groupby(['DfB_INDEX'],as_index = False).max() 这就给了我我正在寻找的值,据我所知。 –