Вычислить среднее значение для каждой строки, содержащей списки значений - PullRequest
1 голос
/ 17 февраля 2020

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

Структура данных выглядит следующим образом:

l1 = [[1,2,4,3],[1,2,4,3], [1,2,4,3]]
l2 = [[8,2,6,4],[1,2,4,3],[1,2,4,3]]
l3 = [[1,2,4,9],[1,2,4,3],[1,2,4,3]]

df = pd.DataFrame([l1, l2, l3], columns=list('xyz'))

df:

      x          y       z ...
x [1,2,4,3] [1,2,4,3] [1,2,4,3]

y [8,2,6,4] [1,2,4,3] [1,2,4,3]

z [1,2,4,9] [1,2,4,3] [1,2,4,3]

и я хотите получить такой результат:

      x          y       z         MEAN
x [1,2,4,3] [1,2,4,3] [1,2,4,3]   2.50000

y [8,2,6,4] [1,2,4,3] [1,2,4,3]   3.33333

z [1,2,4,9] [1,2,4,3] [1,2,4,3]   3.00000

Есть предложения?

1 Ответ

5 голосов
/ 17 февраля 2020

Вы можете сгладить значения для строк с помощью numpy.concatenate до numpy массива и вызова mean:

df['MEAN'] = [np.concatenate(x).mean() for x in df.to_numpy()]
#for oldier pandas versions
#df['MEAN'] = [np.concatenate(x).mean() for x in df.values]
print (df)
              x             y             z      MEAN
x  [1, 2, 4, 3]  [1, 2, 4, 3]  [1, 2, 4, 3]  2.500000
y  [8, 2, 6, 4]  [1, 2, 4, 3]  [1, 2, 4, 3]  3.333333
z  [1, 2, 4, 9]  [1, 2, 4, 3]  [1, 2, 4, 3]  3.000000
...