Уникальное значение в серии панд - PullRequest
0 голосов
/ 28 июня 2018

У меня есть серия длинных струн панды.

Я хочу получить количество слов во всей серии. Я пробовал с

df.value_counts().to_dict()

Но это дает счетчик уровня строки, а не уровень слова.

Как я могу сделать это эффективно?

Моя серия выглядит как ниже

print df.head (3)

0 4632 Н. Роквелл-стрит, Чикаго Окрестности Роквелла 773 60625 4748 N Кедзи

1 4632 Н. Роквелл Стрит, Чикаго Роквелл Бдой 773 60625 4632 N Рок

2 4632 Н. Роквелл-стрит, Лос-Анджелес Рок Гуд Гриль 773 60625 3658 Вт Лоурен

Я хотел создать словарь следующим образом

a['4632'] = 3
a['Rockwell'] = 3
a['LA'] = 1

и т. Д.

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, что здесь лучше решение на чистом питоне с Counter, объединяющим все значения в длинную строку с split:

from collections import Counter

d = Counter(' '.join(df).split())
#if necessary convert to dict
#d = dict(Counter(' '.join(df).split()))

Или используйте split с stack сначала:

d = df.str.split(expand=True).stack().value_counts().to_dict()
print (d)
{'Rockwell': 4, '4632': 4, 'Street,': 3, '773': 3, '60625': 3, 'N.': 3, 'N': 2, 'Rock': 2, 'Chicago': 2, 'Kedzie': 1, 'Grill': 1, 'Neighborhood': 1, '3658': 1, 'Lawren': 1, 'W': 1, '4748': 1, 'LA': 1, 'hood': 1, "Rockwell'": 1, 'Bdoy': 1}
...