Количество значений в dict серии pandas

#python #pandas #count

#python #pandas #подсчитывать

Вопрос:

У меня есть серия dicts pandas, подобная этой:

 print(df['genres'])
0                        {'0': '1', '1': '4', '2': '23'}
1             {'0': '1', '1': '25', '2': '4', '3': '37'}
2                                             {'0': '9'}

print(type(df['genres']))
<class 'pandas.core.series.Series'>

print(type(df['genres'][0]))
<class 'dict'>
 

Я хочу посчитать значения, чтобы получить что-то вроде этого:

 {'1': 2, '4': 2, '9': 1, '23': 1, '25': 1, '37': 1}
 

Я попробовал следующее:

 print(Counter(chain.from_iterable(df.genres.values)))
Counter({'0': 3, '1': 2, '2': 2, '3': 1})

print(pd.Series(df['genres']).value_counts())
{'0': '1', '1': '4', '2': '23'}                                  1
{'0': '1', '1': '25', '2': '4', '3': '37'}                       1
{'0': '9'}                                                       1
 

Я думаю, что это довольно легко для кого-то более опытного, чем я. Но я действительно этого не понимаю…

Ответ №1:

Попробуйте:

 pd.DataFrame(list(df.genres)).stack().value_counts().to_dict()
 

Вывод:

 {'1': 2, '4': 2, '37': 1, '9': 1, '23': 1, '25': 1}
 

Комментарии:

1. Спасибо за ваш ответ. Я попытался и получил сообщение об ошибке: AttributeError: объект ‘Series’ не имеет атрибута ‘to_list’