Как использовать .values_counts () для элементов списка в кадре данных - PullRequest
2 голосов
/ 13 мая 2019

У меня есть фрейм данных df, который выглядит следующим образом:

data = [['Alex','Japan'],['Joe','Japan, India']]
df = pd.DataFrame(data,columns=['Name','Countries'])

Name Countries
Alex Japan
Joe  Japan, India

Поэтому я хочу изменить df таким образом, чтобы при реализации df['Countries'].value_coun ts(),Я получаю

Japan 2
India 1

Поэтому я подумал, что я должен преобразовать эти строки в df['Countries'] в список, используя это:

df['Countries']= df['Countries'].str[0:].str.split(',').tolist()

    Name    Countries
0   Alex    [Japan]
1   Bob [Japan, India]

Но теперь, когда я запускаю df['Countries'].value_counts(), я получаюследующая ошибка:

TypeError: unhashable type: 'list'

Все, что я хочу, - это когда я запускаю .values_counts(), я получаю 2 для Японии и 1 для Индии.Пожалуйста, посмотрите, можете ли вы помочь мне с этим.Спасибо!

Ответы [ 2 ]

4 голосов
/ 13 мая 2019

Используйте Series.str.split с изменением формы на DataFrame.stack для Series, поэтому возможно использование value_counts:

s = df['Countries'].str.split(', ', expand=True).stack().value_counts()
print (s)
Japan    2
India    1
dtype: int64
3 голосов
/ 13 мая 2019

Другой способ использования series.str.get_dummies():

df.Countries.str.get_dummies(',').sum()

India     1
Japan     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...