例如,我在下面有一个数据框,我想从上一行获取值为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)]
答案 0 :(得分:8)
在“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