如何找到指定值之后的下一个零并提取其时间戳?

How to find the next zero that follows a specified value and pull out its time stamp?

我有一个看起来像这样但更长的 df:

df = pd.DataFrame({
    'Time' : [1,2,7,10,15,16,77,98,999,1000,1121,1245,1373,1490,1555],  
    'ID' : ['1', '1', '1', '1', '1', '2', '2', '2', '2', '2', '3', '3', '3', '3', '3'],
    'Act' : ['1', '2', '4', '1', '2', '0', '2', '4', '3', '1', '4', '0', '3', '1', '2']})

Act 值的范围是 0-4。我想找到 4 之后的第一个零,然后取该零的“时间”列值。如果连续有两个4,然后只有一个0,我只对最接近0的4感兴趣。

对于上面的示例,我想要以下值:16 和 1245,并将它们附加到向量中。

谢谢!

您可以组成以 4 开头的组,并获得每个组的前 0 个:

# make groups starting with a 4
group = df['Act'].eq('4').cumsum()
# identify rows with a 0
m = df['Act'].eq('0')
# get first 0 of each group
df.loc[m, 'Time'].groupby(group).first()

输出:

Act
1      16
3    1245
Name: Time, dtype: int64

作为向量:

a = df.loc[m, 'Time'].groupby(group).first().to_numpy()

输出:array([ 16, 1245])