Pandas: calculate average from numpy array for each row in column

I have a pandas dataframe, df , that contains columns where each row contains a numpy array of different sizes, eg.

   column A 
0  np.array([1,2,3])
1  np.array([1,2,3,4])
2  np.array([1,2])

      

Is there a built-in pandas function that will return the average of each array, i.e. rows, for the whole column? Something like:

df.A.mean()

      

But it works on every line. Thanks for any help.

+3


source to share


1 answer


You can use df.<column>.map

to apply a function to every item in a column:



df = pd.DataFrame({'a': 
    [np.array([1, 2, 3]), 
     np.array([4, 5, 6, 7]), 
     np.array([7, 8])]
})

df
Out[8]: 
              a
0     [1, 2, 3]
1  [4, 5, 6, 7]
2        [7, 8]

df['a'].map(lambda x: x.mean())
Out[9]: 
0    2.0
1    5.5
2    7.5
Name: a, dtype: float64

      

+4


source







All Articles