熊猫使用列“ b”中之前和之后的平均单元格填充列“ a”

时间:2020-08-06 00:10:15

标签: python pandas cell average

我有一个时间序列数据集,每隔第二个时间间隔就缺少GPS。

我希望使用Pandas在数据空白前后直接使用GPS平均值填充这些缺失值。

在下面的示例中,这将导致在'timestamp''06:41:59'的'AV_latitude'和'AV_longitude'列中填充之前和之后的平均位置。

enter image description here

如果'AV'列中的所有单元格都使用与我将使用'fillna'合并丢失的数据值相同的方法填充,这不是问题。

任何帮助将不胜感激!

2 个答案:

答案 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