Панды: Рассчитайте среднее значение каждые 2 строки столбца и поместите его в новый столбец - PullRequest
3 голосов
/ 11 апреля 2019

Я хочу сделать среднее значение для столбца, но хочу, чтобы средние значения были помещены в новый столбец с пандами.

Я хочу перейти из этого формата:

values
10
5
8
7
2
5
6
7

В этом формате:

values  average
10  nan
5   7.5
8   6.5
7   7.5
2   4.5
5   3.5
6   5.5
7   6.5

Здесь есть решение для чего-то похожего: Усреднение каждых двух последовательных значений индекса (каждые 2 минуты) в панде dataframe , но я хочу сохранить одинаковое количество строк.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019

Для этого вы можете использовать pd.Series.rolling (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html):

data = pd.Series([10, 5, 8, 7, 2, 5, 6, 7])
print(data.rolling(2).mean())

Выход:

0    NaN
1    7.5
2    6.5
3    7.5
4    4.5
5    3.5
6    5.5
7    6.5
dtype: float64
2 голосов
/ 11 апреля 2019

В другом решении значения заменяют рассматриваемый столбец.Я хочу поместить их в новую колонку.Тем временем мне удается найти решение благодаря Полу Х:

df = pd.DataFrame({'values': [10, 5, 8, 7, 2, 5, 6, 7]})
df["average"] = df["values"].rolling(2).mean()
print(df)

Вывод:

   values  average
0      10      NaN
1       5      7.5
2       8      6.5
3       7      7.5
4       2      4.5
5       5      3.5
6       6      5.5
7       7      6.5
...