Count of elements in lists within pandas data frame

You can also have an one liner like this:

df = pd.Series(sum([item for item in din.x], [])).value_counts()

First flatten values of lists and then count by value_counts or size or Counter:

a = pd.Series([item for sublist in din.x for item in sublist])

Or:

a = pd.Series(np.concatenate(din.x))

df = a.value_counts().sort_index().rename_axis('x').reset_index(name='f')

Or:

df = a.groupby(a).size().rename_axis('x').reset_index(name='f')

from collections import Counter
from  itertools import chain

df = pd.Series(Counter(chain(*din.x))).sort_index().rename_axis('x').reset_index(name='f')

print (df)
   x  f
0  a  2
1  b  1
2  c  2
3  d  1
4  e  1

Tags:

Python

Pandas