Найти стандартное отклонение столбца в Pandas, где каждый элемент является массивом - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь найти стандартное отклонение столбца в кадре данных Pandas, где каждый элемент представляет собой массив с нулевыми значениями. Я хочу, чтобы конечный результат представлял собой один массив NumPy, в котором каждое значение является стандартным отклонением соответствующих значений в массивах NUMPY, составляющих столбец, т.е.

row1 = [x1,x2,x3]
row2 = [y1,y2,y3]
row3 = [z1,z2,z3]

std(column) = [std of x1,y1,z1, std of x2,y2,z2, std of x3,y3,z3],

Когда я выполняю ту же операцию со средним значением, он работает отлично:

df['DATA'].mean()

дает именно тот результат, который я хочу, аналогично тому, что я описал выше. Однако

df['DATA'].std()

выдает эту ошибку: TypeError: setting an array element with a sequence.

Почему std не работает так же, как mean? Как я могу заставить это работать?

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Здесь может помочь относительно новая функция в пандах: explode

import pandas as pd
import numpy as np

s = pd.Series([np.array([1, 2, 3]),np.array([510, 3, 3])])
s.explode().reset_index().groupby('index').std()[0].values

# array([  1.        , 292.71658648])

Доступна с версии 0.25. * документы 1006 *

0 голосов
/ 07 октября 2019

Я думаю, это то, что вы пытаетесь сделать, надеюсь, это поможет.

stuff = [[1,2,3],[3,3,3],[4,3,5]]
import pandas as pd
stuff = pd.DataFrame(stuff)
stuff = stuff.rename(columns={0:'A',1:'B',2:'C'})
stuff.std()
...