実際のコードで説明しますと、こんな感じになります。
Python
1import pandas as pd
2
3df = pd.DataFrame({'timestamp':['0:00:00', '0:00:10', '0:00:20',
4 '0:00:30', '0:00:40', '0:00:50',
5 '0:01:00', '0:01:10', '0:01:20',
6 '0:01:30', '0:01:40', '0:01:50',
7 '0:02:00', '0:02:10'],
8 'data':[37,98,75,19,24,70,83,14,44,66,61,87,36,50],
9 'flag':[0,0,0,0,0,0,0,0,0,1,0,0,0,0]})
10
11# timestamp列はtimedelta型(またはdatetime型)にしておく
12df['timestamp'] = pd.to_timedelta(df['timestamp'])
13# timestamp data flag
14#0 00:00:00 37 0
15#1 00:00:10 98 0
16#2 00:00:20 75 0
17#3 00:00:30 19 0
18#4 00:00:40 24 0
19#5 00:00:50 70 0
20#6 00:01:00 83 0
21#7 00:01:10 14 0
22#8 00:01:20 44 0
23#9 00:01:30 66 1
24#10 00:01:40 61 0
25#11 00:01:50 87 0
26#12 00:02:00 36 0
27#13 00:02:10 50 0
28
29### (1) 最も古いtimestampの値 ###
30# timestamp列の最小値を取得
31print(df['timestamp'].min())
32# 0 days 00:00:00
33
34
35### (2) DataFrame内の最新のtimestampがindexになっているdata ###
36
37# timestamp列が最大値を取るindexを取得
38target_index = df['timestamp'].idxmax()
39# target_index行の data列を取得(.at()か .loc()を使う)
40print(df.at[target_index, 'data'])
41# 50
42
43# (補足)通常は上記を纒めて以下のように書くことが多い
44print(df.loc[df['timestamp'].idxmax(), 'data'])
45# 50
46
47
48### (3) flag列において最新でflagが1になっているtimestamp ###
49### (ただし探索範囲は最新の時間から60秒前まで) ###
50
51# 最新のtimestampを求める
52current = df['timestamp'].max()
53# 最新の時間から60秒前までの列かどうかのBoolianリストを求める
54filter_list1 = (df['timestamp'] >= (current - pd.Timedelta(60, unit='s')))
55# 更にflagが1の列かどうかのBoolianリストを求める
56filter_list2 = (df['flag']==1)
57# 上記2つの条件のANDで新しいfilter_listを作成
58filter_list = (filter_list1 & filter_list2)
59#上記の条件に合致した行の timestamp列を取得(.loc()を使う)
60print(df.loc[filter_list, 'timestamp'])
61#9 00:01:30
62#Name: timestamp, dtype: timedelta64[ns]
63
64# (補足)上記を纒めると以下のようにかける
65print(df.loc[(df['timestamp'] >= (df['timestamp'].max()-pd.Timedelta(60, unit='s'))) & (df['flag']==1), 'timestamp'])
66#9 00:01:30
67#Name: timestamp, dtype: timedelta64[ns]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/16 03:00