例如,我有一个数据框,我想从上一行获取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