在python中有条件地比较不同数据框的列

问题描述 投票:0回答:1

我有两个数据帧,每个数据帧具有相同的列1)参与者做出的响应2)以秒和毫秒(s.ms)为单位的响应时间。例如,>

subjectData = 

Key     RT
0   v   2.20
1   v   4.34
2   v   5.51
3   v  10.39

我还有一个数据框,它是“正确”的响应和时间。例如,>

correctData = 

Key     RT
0   v   2.25
1   w   4.34
2   v   5.61
3   v  12.39

我首先想看看响应在哪里匹配...也就是说,找到与subjectData相同的正确数据行。如果它们匹配,那么我想看看时间是否匹配+/- 1秒。

所以最终结果应该看起来像这样

TRUE
FALSE
TRUE
FALSE

因此,如果受试者在提供的数据框中列出的“正确”时间内按了正确的按钮,则只要按了正确的按钮,就可以正确地获得目标。请注意,这些数据框的长度很可能不一样(受试者的反应可能多于或少于“正确”的反应数)。因此,“加入”可能在这里不起作用。

关于如何最有效地执行此操作的任何想法?

我有两个数据帧,每个数据帧具有相同的列1)参与者做出的响应2)以秒和毫秒(s.ms)为单位的响应时间。例如,subjectData = Key RT 0 v 2.20 ...

python pandas dataframe conditional-statements
1个回答
0
投票

您可以使用DataFrame.eq:

cond1=subjectData['Key'].eq(correctData['Key'])
cond2=(subjectData['RT']<(correctData['RT']+1))&(subjectData['RT']>(correctData['RT']-1))
cond1&cond2

0     True
1    False
2     True
3    False
dtype: bool
© www.soinside.com 2019 - 2024. All rights reserved.