найти максимальное количество транзакций в временном интервале для сгруппированного столбца даты и времени в панде - PullRequest
1 голос
/ 23 апреля 2019

Мой вопрос относится к моему предыдущему вопросу, но он отличается. Итак, новый пост создан.

Я хотел бы получить максимальное количество в 10-минутном интервале для столбца даты и времени в панде dataframe.

мой стол:

 id1       date_time               adress       a_size         
 reom      2005-8-20 22:51:10      75157.5413   ceifwekd         
 reom      2005-8-20 22:55:25      3571.37946   ceifwekd         
 reom      2005-8-20 11:21:01      3571.37946   tnohcve          
 reom      2005-8-20 11:22:09      97439.219    tnohcve          
 reom      2005-8-20 11:25:09      97439.219    efgrcaw          
 penr      2005-8-20 17:07:16     97439.219    ceifwekd          
 penr      2005-8-20 19:10:37      7391.6258    ceifwekd         
 ....

мне нужно:

 id1       date_time               adress       a_size         max_transaction
 reom      2005-8-20 22:51:10      75157.5413   ceifwekd         2
 reom      2005-8-20 22:55:25      3571.37946   ceifwekd         2
 reom      2005-8-20 11:21:01      3571.37946   tnohcve          3 
 reom      2005-8-20 11:22:09      97439.219    tnohcve          3
 reom      2005-8-20 11:25:09      97439.219    efgrcaw          3
 penr      2005-8-20 17:07:16     97439.219    ceifwekd          1
 penr      2005-8-20 19:10:37      7391.6258    ceifwekd         1

max_transaction - максимальное количество транзакций в бинах за 10 минут.

например,

reom      2005-8-20 11:21:01      3571.37946   tnohcve          3 
reom      2005-8-20 11:22:09      97439.219    tnohcve          3
reom      2005-8-20 11:25:09      97439.219    efgrcaw          3

здесь у «reom» есть 3 транзакции с 11:21:01 - 11:25:09, то есть в 10-минутном интервале.

Мой код:

 df['num_per_10_min'] = df.groupby(['id1',df['date_time'].dt.floor('10Min')])['date_time'].agg('count')    

не работает.

  TypeError: incompatible index of inserted column with frame index

Есть предложения?

Спасибо

1 Ответ

1 голос
/ 23 апреля 2019

Попробуйте transform и np.size:

 df['num_per_10_min'] = (df.groupby(['id1',df['date_time'].dt.floor('10Min')])
                          .date_time.transform(np.size))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...