计算所选行

时间:2016-10-19 20:12:57

标签: pandas

我有一个有序时间(以秒为单位)的数据框和一个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位。

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