我有一个时间序列数据集,每隔第二个时间间隔就缺少GPS。
我希望使用Pandas在数据空白前后直接使用GPS平均值填充这些缺失值。
在下面的示例中,这将导致在'timestamp''06:41:59'的'AV_latitude'和'AV_longitude'列中填充之前和之后的平均位置。
如果'AV'列中的所有单元格都使用与我将使用'fillna'合并丢失的数据值相同的方法填充,这不是问题。
任何帮助将不胜感激!
答案 0 :(得分:1)
Pandas具有一种处理NaN
值.fillna
的方法。除其他方法外,它还支持“正向填充”和“向后填充”,将其结合使用可得到理想的结果。
df[['lat', 'long']] = (
df[['lat', 'long']].fillna(method='ffill')
+ df[['lat', 'long']].fillna(method='backfill')
) / 2
作为奖励,这还将照顾多个连续的NaN
答案 1 :(得分:1)
我不确定您是不是真正想mean
,还是您真正想对数据进行重采样。一般而言,后者将是更常见的任务。这是我使用的输入数据:
df = pd.DataFrame({'timestamp': {0: '6/16/2020 6:41:58', 1: '6/16/2020 6:42:00'},'latitude': {0: -32.4353472, 1: -32.43535107}})
df['timestamp'] = pd.to_datetime(df['timestamp'])
df
timestamp latitude
0 2020-06-16 06:41:58 -32.435347
1 2020-06-16 06:42:00 -32.435351
然后,对数据重新采样:
df = df.resample('s', on='timestamp').mean().reset_index()
df
输出:
timestamp latitude
0 2020-06-16 06:41:58 -32.435347
1 2020-06-16 06:41:59 NaN
2 2020-06-16 06:42:00 -32.435351