Ежедневные упоминания слова

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

print(df)

Date         content

2018-11-01    Apple Inc. AAPL 1.54% reported its fourth cons...
2018-11-01    U.S. stocks climbed Thursday, Apple is a real ...
2018-11-02    GONE are the days when smartphone manufacturer...
2018-11-03    To historians of technology, the story of the ...
2018-11-03    Apple Inc. AAPL 1.54% reported its fourth cons...
2018-11-03    Apple is turning to traditional broadcasting t...

(...)

Я хотел бы вычислить общее количество ежедневные упоминания - следовательно, агрегирование по дате - слова «Apple». Как я могу создать final_df?

print(final_df) 

    2018-11-01    2
    2018-11-02    0
    2018-11-03    2
    (...)

Возможный дубликат Подсчитайте вхождения определенных слов в фреймворке pandas

Space Impact 17.12.2018 11:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
91
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете GroupBy разные даты, использовать str.count для подсчета вхождений Apple и агрегировать с sum, чтобы получить количество подсчетов в каждой группе:

df.groupby('Date').apply(lambda x: x.content.str.count('Apple').sum())
                  .reset_index(name='counts')

      Date     counts
0 2018-11-01       2
1 2018-11-02       0
2 2018-11-03       2

Мне понравился ваш ответ за его простоту и удобочитаемость, но я предпочитаю создавать фрейм данных, а не серию, в одной строке. Спасибо.

Alessandro Ceccarelli 17.12.2018 12:29

Не особенно;

Alessandro Ceccarelli 17.12.2018 12:30

Для этого изменил ответ, добавив reset_index

yatu 17.12.2018 12:30
Ответ принят как подходящий

Используйте count для нового Series, агрегируйте по столбцу df['Date'] с sum:

df1 = df['content'].str.count('Apple').groupby(df['Date']).sum().reset_index(name='count')
print (df1)
         Date  count
0  2018-11-01      2
1  2018-11-02      0
2  2018-11-03      2

Вы можете попробовать альтернативное решение с ул. содержит с функцией groupby, не используя sum все время.

>>> df
         Date                                         content
0  2018-11-01  Apple Inc. AAPL 1.54% reported its fourth cons
1  2018-11-01   U.S. stocks climbed Thursday, Apple is a real
2  2018-11-02  GONE are the days when smartphone manufacturer
3  2018-11-03   To historians of technology, the story of the
4  2018-11-03  Apple Inc. AAPL 1.54% reported its fourth cons
5  2018-11-03  Apple is turning to traditional broadcasting t

Решения:

df.content.str.contains("Apple").groupby(df['Date']).count().reset_index(name = "count")

         Date  count
0  2018-11-01      2
1  2018-11-02      1
2  2018-11-03      3


# df["content"].str.contains('Apple',case=True,na=False).groupby(df['Date']).count()

@jezrael, не намеренно, но я изменил свой ответ :-) Надеюсь, вы не возражаете.

Karn Kumar 17.12.2018 16:09

Другие вопросы по теме