如何找到指定值之后的下一个零并提取其时间戳?
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])
我有一个看起来像这样但更长的 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])