¿Contando la ocurrencia de valores en una serie de Panda?

Tengo una serie panda l=pd.Series([3, 1, 4, 2, [1, 2, 10]])

Necesito conseguir algo como:

 value count 3 1 1 2 4 1 2 2 10 1 l.value_counts() 

me da

 TypeError: unhashable type: 'list' 

Incluso traté de aplanar la lista de esta manera:

 chain = itertools.chain(*l) print(list(chain)) 

Pero me da:

 TypeError: 'list' object is not callable 

Si el tamaño de sus datos no es muy grande, puede usar esta solución alternativa:

 l.apply(pd.Series).stack().value_counts() #2.0 2 #1.0 2 #10.0 1 #4.0 1 #3.0 1 #dtype: int64 

U otra opción con chain :

 from itertools import chain pd.Series(list(chain.from_iterable(i if isinstance(i, list) else [i] for i in l))).value_counts() #2 2 #1 2 #10 1 #4 1 #3 1 #dtype: int64 

Y también puede usar Counter de collections :

 from itertools import chain from collections import Counter pd.Series(Counter(chain.from_iterable(i if isinstance(i, list) else [i] for i in l))) #2 2 #1 2 #10 1 #4 1 #3 1 #dtype: int64 

Tratar

 pd.value_counts([i for i in chain.from_iterable(l.values.tolist())]) 

Aquí hay otra solución más, que utiliza los métodos np.hstack () y pd.value_counts() :

 In [24]: pd.value_counts(np.hstack(l.values)) Out[24]: 2 2 1 2 10 1 4 1 3 1 dtype: int64