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

Я пытаюсь создать еженедельный счетчик уникальных значений столбцов и найти верхний недельный счетчик для каждого вхождения за указанный период времени.Пример исходного DataFrame можно увидеть ниже.

date            company

2014-12-01 	bank of america corp
2014-12-01 	bank of america corp
2014-12-01 	jpmorgan chase & co
2014-12-01 	jpmorgan chase & co
2014-12-01 	morgan stanley
2014-12-01      morgan stanley
2014-12-01 	intel corp
2014-12-01 	goldman sachs group inc
2014-12-01 	bank of america corp
2014-12-01 	jpmorgan chase & co
2014-12-02      berkshire hathaway inc
2014-12-02 	berkshire hathaway inc
2014-12-02      berkshire hathaway inc
2014-12-02 	berkshire hathaway inc
2014-12-02 	bank of america corp
2014-12-02 	bank of america corp
2014-12-02 	jpmorgan chase & co
2014-12-02      jpmorgan chase & co
2014-12-02      morgan stanley
2014-12-03 	morgan stanley
2014-12-03 	jpmorgan chase & co
2014-12-03 	bank of america corp
2014-12-03 	morgan stanley
2014-12-03 	goldman sachs group inc
2014-12-03      bank of america corp
2014-12-03 	jpmorgan chase & co
2014-12-03 	goldman sachs group inc
.....           ...........

Я пытаюсь создать счетчик компаний с DataFrame, сгруппированным по неделям, с указанием верхней недели для каждого вхождения компании.У каждой компании должен быть один ряд, содержащий неделю с наибольшим количеством упоминаний.Пример предполагаемого DataFrame можно увидеть ниже:

date            company                   top_week_count

2014-12-07 	bank of america corp      22
2014-12-07 	jpmorgan chase & co       12
2014-12-14 	morgan stanley            15
2014-12-14 	goldman sachs group inc   29
2014-12-21 	berkshire hathaway inc    35
.....           ....                      ..

Приведенные выше фреймы данных представляют собой лишь краткий фрагмент всего DF, охватывающего несколько лет.

Любая помощь, которую кто-либо может оказать, будет весьма полезной.оценили!

Ответы [ 2 ]

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

Попробуйте:

df.groupby([pd.Grouper(freq='W', key='date'),'company'])['company']\
.agg(['count']).reset_index().sort_values('count',ascending=False)
        date                      company  count
0 2014-12-07         bank of america corp      7
5 2014-12-07          jpmorgan chase & co      7
6 2014-12-07               morgan stanley      5
1 2014-12-07       berkshire hathaway inc      4
2 2014-12-07      goldman sachs group inc      2
3 2014-12-07  goldman sachs group inc/the      1
4 2014-12-07                   intel corp      1
0 голосов
/ 04 февраля 2019

Попробуйте

from pandas.tseries.offsets import *
df['weekend'] = df['date'] + Week(weekday=4)
df.groupby(['weekend', 'company']).size().reset_index(name = 'top_week_count')

    weekend     company                top_week_count
0   2014-12-05  bank of america corp    7
1   2014-12-05  berkshire hathaway inc  4
2   2014-12-05  goldman sachs group inc 3
3   2014-12-05  intel corp              1
4   2014-12-05  jpmorgan chase & co     7
5   2014-12-05  morgan stanley          5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...