我有以下dataframe:
data = [
[ID, '2022-04-23T03:36:26Z', 60, 10, 83],
[ID, '2022-04-23T03:37:30Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:37:48Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:38:24Z', 61, 11, 72],
[ID, '2022-04-23T03:44:20Z', 63, 13, 75],
[ID, '2022-04-23T03:45:02Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:45:06Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:45:08Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:45:12Z', Nan, Nan, Nan],
[ID, '2022-04-23T03:45:48Z', 69, 15, 61]
]
df = pd.DataFrame(data=data,
columns=['ID', 'time', 'latitude', 'longitude', 'speed')
问题是,对于某些行,我只有时间值,例如。第二排和第三排对于这些行,我想根据时间、纬度和经度计算Nan速度行的前一行(第1行)和后一行(第4行)的平均速度。
例如,行2和行3中的速度值应当是基于行进距离(可以使用半正矢公式)除以总时间量(“2022 -04- 23 T03:38:24 Z”-“2022-04- 23 T03:36:26 Z”)的平均速度值。
如何用Python写这个?
1条答案
按热度按时间m1m5dgzv1#
pandas.DataFrame.interpolate
可能是你正在寻找的,如果你正在寻找一个天真的方法 (如果你正在寻找更具体的东西,还有其他选择,请参阅文档):结果: