1 回答

TA貢獻1810條經驗 獲得超4個贊
您的時間列表不是一種理想的格式,因此我將向您展示一個日期的方法,其中數據框h23是手動構建的。如果需要,您可以對其進行編碼以構建一個包含所有時間的數據框。
基本前提是制作一個數據框h23,例如包含照片的所有時間戳。使用它與 df 時間戳合并,使用pd.merge_asof它可以進行最接近的時間匹配。 nearest意味著實際時間可以是之前或之后,但是如果時間需要是事件之前的最近時間,則還有 和 的backward選項。forward
import pandas as pd
df = pd.DataFrame({'timestamp': {0: '2019-06-23 07:00:00',
1: '2019-06-23 07:03:00',
2: '2019-06-23 07:06:00',
3: '2019-06-23 07:09:00'},
'date': {0: '2019-06-23', 1: '2019-06-23', 2: '2019-06-23', 3: '2019-06-23'},
'hour': {0: '07:00:00', 1: '07:03:00', 2: '07:06:00', 3: '07:09:00'},
'person_1': {0: 0.124, 1: 0.131, 2: 0.154, 3: 0.16399999999999998},
'person_2': {0: 0.431, 1: 0.43799999999999994, 2: 0.433, 3: 0.441}})
df['timestamp'] = pd.to_datetime(df['timestamp'])
Hours23=['07:00','08:00','09:32','10:14','11:15','12:17','13:03','14:41','15:04','17:05']
h23 = pd.DataFrame({'Time':Hours23, 'Day':'2019-06-23'})
h23['timestamp'] = pd.to_datetime(h23['Day'] + " " + h23['Time'])
pd.merge_asof(h23,df, on='timestamp', direction='nearest').drop(columns=['Day','Time'])
輸出
timestamp date hour person_1 person_2
0 2019-06-23 07:00:00 2019-06-23 07:00:00 0.124 0.431
1 2019-06-23 08:00:00 2019-06-23 07:09:00 0.164 0.441
2 2019-06-23 09:32:00 2019-06-23 07:09:00 0.164 0.441
3 2019-06-23 10:14:00 2019-06-23 07:09:00 0.164 0.441
4 2019-06-23 11:15:00 2019-06-23 07:09:00 0.164 0.441
5 2019-06-23 12:17:00 2019-06-23 07:09:00 0.164 0.441
6 2019-06-23 13:03:00 2019-06-23 07:09:00 0.164 0.441
7 2019-06-23 14:41:00 2019-06-23 07:09:00 0.164 0.441
8 2019-06-23 15:04:00 2019-06-23 07:09:00 0.164 0.441
9 2019-06-23 17:05:00 2019-06-23 07:09:00 0.164 0.441
添加回答
舉報