Среднее ряда в кадре данных - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть кадр данных, который выглядит примерно так:

values
[0.0,12.34,223.12,4.55,...]
[0.0,78.12,12.90,...]
.
.
. 

Я пытаюсь вычислить среднее значение столбца значений и сохранить это число в новом столбце.

Кадр данныхв данный момент содержит только один столбец, а длина каждого массива в столбце значений не является строгой.

Ожидаемый результат:

value                             average
[0.0,12.34,223.12,4.55,...]        77.87
[0.0,78.12,12.90,...]              12.11            
.
.
. 

Np.mean () не будет работать, когда япопробуйте выполнить цикл данных с помощью iterrows ().

По сути, мне нужно расширить приведенный ниже код, чтобы вычислить все средние значения в кадре данных:

np.mean(df_average_pace.paces[0])

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Использование

pd.DataFrame(df.value.tolist()).mean(1)
Out[541]: 
0    2.000000
1    4.000000
2    5.333333
dtype: float64
0 голосов
/ 30 ноября 2018

У вас есть серия списков.Это означает, что векторизация невозможна.Вы можете использовать цикл уровня Python через pd.Series.map (или, что эквивалентно, apply) и statistics.mean:

from statistics import mean
df['average'] = df['value'].map(mean)

Вот демоверсия:

from statistics import mean
df = pd.DataFrame({'value': [[1, 4, 1, 2], [2, 4, 6], [9, 2, 5]]})
df['average'] = df['value'].map(mean)

print(df)

          value   average
0  [1, 4, 1, 2]  2.000000
1     [2, 4, 6]  4.000000
2     [9, 2, 5]  5.333333
...