два способа вычислить количество появлений двух слов в текстовом столбце - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в пандах, и сейчас я изучаю это на Kaggle.

Вот упражнение, в котором нужно найти количество вхождений двух слов в столбце описания.

Я нашел первое утверждение из stackoverflow, но второе - правильный ответ.В чем причина этого другого результата?Спасибо !!!

1.Найдено из stackoverflow

tropical = reviews.description.str.count("tropical").sum()
fruity = reviews.description.str.count("fruity").sum()
descriptor_counts = pd.Series([tropical,fruity])

`

2.Правильный ответ

tropical = reviews.description.map(lambda desc: 'tropical' in desc).sum()
fruity = reviews.description.map(lambda desc: 'fruity' in desc).sum()
descriptor_counts = pd.Series([tropical, fruity],index=['tropical','fruity'])

Первый результат [3703, 9259] Второй результат [3607, 9090]

Обновить!Исходный вопрос: создайте серию descriptor_counts, считая, сколько раз каждое из этих двух слов появляется в столбце описания в наборе данных.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вот пример

enter image description here

Первый код считается тропическим, чтобы быть 5, и фруктовым, чтобы быть 4. Он считает повторения слова втакое же описание.Таким образом, результатом будет [5,4] в этом примере.

Второй код считает актуальным значение 4, а фруктовым - 3. Он учитывает присутствие слова в каждом описании (if tropical in description).Как только вы найдете его, он считается одним, независимо от того, сколько еще в этом описании.Таким образом, результат будет [4,3].

Итак, я чувствую, что вопрос не так.Если вопрос касается количества вхождений двух слов, в этом примере [5,4] должно быть правильным (в вашем случае [3703,9259]).Если вопрос спрашивает, сколько описаний встречается в каждом слове, то вы подсчитываете описания, используя if word in description.Итак, проверьте вопрос еще раз.

0 голосов
/ 07 февраля 2019

Первый меньше, потому что он получает только значения, которые равны 'tropical' или 'fruity'.

Итак:

>>> s='a'
>>> s=='a'
True

Но второекаждый получает значения, которые содержат 'tropical' или 'fruity', поэтому выше:

>>> s='ab'
>>> s=='a'
False

Так оно и есть:

>>> s='ab'
>>> 'a' in s
True
...