Нахождение среднего значения трех последовательных строк в pandas и groupby

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть набор данных GPS (в формате csv) сотен людей, и я должен изучить их мобильность. Мне удалось вычислить расстояние между каждыми двумя точками, а затем вычислить скорость простым делением на приращение времени между этими двумя точками. Я выполнил все эти вычисления, используя pandas и группировку по нику (это важно, потому что у каждого человека разная траектория, и вы не можете смешивать расстояния и скорости).

Следующий шаг, который я должен сделать, это вычислить среднее значение для каждых трех или четырех скоростей, чтобы устранить некоторые ошибки в данных GPS. Я пробовал это, и это работает нормально, но я не могу найти способ сгруппировать его по нику, поскольку скорости каждого пользователя разные. Есть идеи?

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

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

Ответ №1:

это может быть сделано просто с помощью индекса как способа группировки строк

 df['bins'] = df.index // n
  

а затем выполнение group by для ‘bins’. чтобы поместить это в более чистую функцию, вот код

 import pandas as pd

df = pd.DataFrame({'A':[1,2,3,3,4,4,4],'B':[1,2,3,4,5,6,7]})
def n_average(df, n):
    df['bin'] = df.index // n
    grouped_df = df.groupby(['bin']).mean()
    return grouped_df
n_average(df, 3)