我有一个包含海拔列的数据框。开始时,GPS 信号波动的高度保持不变。当 GPS 接收器在爬山过程中移动时,海拔高度有时会发生变化。 当高度开始不断向上移动时,如何找到时间戳?简单的“大于”比较是行不通的,因为在热身过程中,海拔高度在开始时会略有跳跃。
时间行示例如下:
import pandas as pd
import numpy as np
df_GPS = pd.DataFrame([['2024-06-21 06:22:38', 605.968389],
['2024-06-21 06:22:39', 606.009398],
['2024-06-21 06:22:40', 605.630573],
['2024-06-21 06:22:41', 605.476367 ],
['2024-06-21 06:22:42', 605.322161],
['2024-06-21 06:22:43', 605.268389],
['2024-06-21 06:22:44', 605.559398],
['2024-06-21 06:22:45', 606.630573],
['2024-06-21 06:22:46', 607.476367 ],
['2024-06-21 06:22:47', 609.322161],
], columns=['time', 'Altitude'])
理想情况下我会得到以下结果: 时间 = 2024-06-21 06:22:43 因为从那里海拔单调上升。
我的代码仍然有问题
start_move = df_GPS.loc[df_GPS['Altitude'] == df_GPS["Altitude"].is_monotonic_increasing, 'time']
print(start_move)
我的拼写错误在哪里?
假设
time
已转换为数据时间/时间戳,那么你可以从末尾向后查看以找到单调的变化:
df_GPS_rev = df_GPS.sort_values(by = 'time', ascending = False)
start_move = df_GPS_rev[df_GPS_rev['Altitude'] < df_GPS_rev['Altitude'].shift(-1)].iloc[0]
print(start_move['time'])
给出:
2024-06-21 06:22:43