我有一个有序时间(以秒为单位)的数据框和一个0或1的列:
time bit
index
0 0.24 0
1 0.245 0
2 0.47 1
3 0.471 1
4 0.479 0
5 0.58 1
... ... ...
我想选择那些时差为的行,让我们说< 0.01 s。但只有位1和位0之间的差异。所以在上面的例子中我只选择第3行和第4行(或其中任何一行)。我以为我会计算时间列的diff()。但我需要以某种方式选择0/1位。
答案 0 :(得分:1)
来自未来来回答这个问题。您可以对数据框应用一个函数,该函数查找符合条件的行的索引并相应地返回行对:
def filter_(x, threshold = 0.01):
indices = df.index[(df.time.diff() < threshold) & (df.bit.diff().abs() == 1)]
mask = indices | indices - 1
return x[mask]
print(df.apply(filter_, args = (0.01,)))
输出:
time bit
3 0.471 1
4 0.479 0