python – 如何从Pandas中的数据框中获取条件满足的前一行

例如,我有一个数据框,我想从上一行获取Value为1的时间戳

    TIME    VALUE
0   23:01   0
1   23:02   0
2   23:03   1
3   23:04   0
4   23:05   0
5   23:06   1
6   23:07   0
7   23:08   0
8   23:09   0
9   23:10   0
10  23:11   1
11  23:12   0
12  23:13   0
13  23:14   0
14  23:15   0
15  23:16   1

我想得到以下作为输出

    PREV_TIME
0   23:02
1   23:05
2   23:10
3   23:15

我不知道在下面将shift(1)放在哪里

PREV_TIME = df['Time'][(df.Value == 1)]

最佳答案 在“VALUE”列上调用shift并将其作为条件传递:

In [7]:
df.loc[df['VALUE'].shift(-1)==1, 'TIME']

Out[7]:
1     23:02
4     23:05
9     23:10
14    23:15
Name: TIME, dtype: object

要在满足条件的行旁边添加新列“PREV Time”:

In [21]:
df['Prev_Time'] = df.loc[df['VALUE'].shift(-1)==1, 'TIME']
df['Prev_Time'] = df['Prev_Time'].shift()
df

Out[21]:
     TIME  VALUE Prev_Time
0   23:01      0       NaN
1   23:02      0       NaN
2   23:03      1     23:02
3   23:04      0       NaN
4   23:05      0       NaN
5   23:06      1     23:05
6   23:07      0       NaN
7   23:08      0       NaN
8   23:09      0       NaN
9   23:10      0       NaN
10  23:11      1     23:10
11  23:12      0       NaN
12  23:13      0       NaN
13  23:14      0       NaN
14  23:15      0       NaN
15  23:16      1     23:15
点赞