У меня есть фрейм данных pandas, в котором записи одного столбца представляют собой пустые массивы, все длины N. Для некоторых операций (например, маскирование определенных значений перед усреднением) я хотел бы извлечь значения в массив, чтобы яиметь объект формы (len (индексы), N).
Однако, когда я смотрю на объект .values, он имеет форму (len (index)), а затем его первый элемент имеет длину N.
f = pd.DataFrame([[1,np.array([1,3,4])],[2,np.array([1,2,4])]], index=[2,5], columns=['sth','sth else'])
print np.shape(f['sth else'].values)
Я предполагаю, что этонепростой вопрос, потому что должен быть способ изменить этот массив, но я не знаю, как решить эту проблему.Я, конечно, могу написать цикл for и извлечь все отдельные подмассивы, но мне было интересно, есть ли что-то более элегантное, что работает.
Редактировать: Я хотел бы выполнить операции маски на наборе значений для определенногоключ, то есть что-то вроде этого:
import numpy.ma as ma
print ma.masked_equal(f['sth else'].values,1)
, который не работает, предположительно, потому что структура массива значений f ['sth else']. values не подходит для этого.Следующее работает:
ma.masked_equal(np.array([np.array([ 1., 3., 4.]) ,np.array([ 1., 2., 4.])]),1)