У меня есть следующий 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
(...)
Вы можете 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
Мне понравился ваш ответ за его простоту и удобочитаемость, но я предпочитаю создавать фрейм данных, а не серию, в одной строке. Спасибо.
Не особенно;
Для этого изменил ответ, добавив reset_index
Вы можете попробовать альтернативное решение с ул. содержит с функцией 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, не намеренно, но я изменил свой ответ :-) Надеюсь, вы не возражаете.
Возможный дубликат Подсчитайте вхождения определенных слов в фреймворке pandas