Pandas заполнить столбец «a», используя среднее значение ячеек непосредственно до и после столбца «b» - PullRequest
0 голосов
/ 06 августа 2020

У меня есть набор данных временных рядов, в котором GPS отсутствует для каждого второго временного интервала.

Я надеюсь использовать Pandas, чтобы заполнить эти недостающие значения, используя среднее значение GPS непосредственно до и после пробел в данных.

В приведенном ниже примере это приведет к заполнению столбцов «AV_latitude» и «AV_longitude» на «отметке времени» «06: 41: 59» со средним значением позиций непосредственно до и после.

введите описание изображения здесь

Это не проблема, если все ячейки в столбцах «AV» заполнены тем же методом, что и я использую «fillna» для объединения недостающих значений данных.

Любая помощь будет оценен!

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Я не уверен, что вы действительно хотите использовать 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
1 голос
/ 06 августа 2020

Pandas имеет метод работы со значениями NaN, .fillna. Среди других методов он поддерживает "прямую заливку" и "обратную заливку", комбинация которых даст желаемый результат.

df[['lat', 'long']] = (
    df[['lat', 'long']].fillna(method='ffill') 
    + df[['lat', 'long']].fillna(method='backfill')
) / 2

В качестве бонуса это также позаботится о нескольких последовательных NaN с

...