Получить таблицу частот для столбца списков - PullRequest
1 голос
/ 24 апреля 2020

Предположим, у меня есть DataFrame, где у меня есть столбец списков.

df = pd.DataFrame({'A': [['a', 'b', 'c'], ['b'], ['c'], ['a', 'b']]})

с выводом

Index  A
0      ['a', 'b', 'c']
1      ['b']
2      ['c']
3      ['a', 'b']

Как получить таблицу частот для частоты появления списка в столбце?

Идеальный результат будет выглядеть как

A               Count
['a', 'b', 'c'] 1
['b']           1
['c']           1
['a', 'b']      1

Попытка что-то вроде этого ...

df.A.value_counts()

приводит к ошибке

TypeError: unhashable type: 'list'

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

map для кортежей, списки не могут быть хешируемыми, как предполагает ошибка:

df.A.map(tuple).value_counts().rename_axis('A').reset_index(name='Count')

           A  Count
0  (a, b, c)      1
1     (a, b)      1
2       (b,)      1
3       (c,)      1
1 голос
/ 24 апреля 2020

Вы также можете использовать apply для преобразования в кортежи:

In [423]: df.A.apply(tuple).value_counts().rename_axis('A').reset_index(name='Count')                                                                                                                       
Out[423]: 
           A  Count
0     (a, b)      1
1       (c,)      1
2  (a, b, c)      1
3       (b,)      1
...