python: groupby - функция, вызываемая при группировке - PullRequest
0 голосов
/ 16 мая 2019

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

Вот функция

def dollar_wtd_two(DF, kw_param, kw_param2):
    return np.sum(DF[kw_param] * DF[kw_param2]) / DF[kw_param2].sum()

Функция dollar_wtd_two имеет 3 параметра DF (кадр данных) и имена столбцов одного и того же кадра данных DF. Концептуально вот что я хотел бы сделать:

DF.groupby(['prime_broker_id', 'country_name'], 
      as_index=False).agg({"notional_current": np.sum, "new_column":dollar_wtd_two(DF, 
           kw_param, kw_param2) })

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

Вот как бы выглядел вывод DF без "new_column"

  DF.groupby(['prime_broker_id', 'country_name'], 
          as_index=False).agg({"notional_current": np.sum })

Выход 1:

   prime_broker_id    country_name  notional_current  
0           BARCAP         AUSTRIA      2.616735e+07       
1           BARCAP         BELGIUM      6.327196e+07       
2           BARCAP         DENMARK      1.286309e+07        
3           BARCAP         FINLAND      4.181843e+07       
4           BARCAP          FRANCE      1.579292e+08      
5           BARCAP         GERMANY      2.653451e+08      
6           BARCAP         IRELAND      1.037968e+07      

Я не могу показать вывод DF с "new_column":dollar_wtd_two(DF, kw_param, kw_param2). Однако в отдельности вывод dollar_wtd_two(DF, kw_param, kw_param2) должен выглядеть следующим образом:

Выход 2:

prime_broker_id  country_name  
BARCAP           AUSTRIA            25.009402
                 BELGIUM            25.083404
                 DENMARK            25.000000
                 FINLAND            25.034493
                 FRANCE             25.000000
                 GERMANY            25.007943
                 IRELAND            25.000000
                 ISRAEL            399.242997

Идея состоит в том, чтобы объединить Выход 1 и Выход 2 в одну операцию. Пожалуйста, дайте мне знать, если неясно.

Любая помощь приветствуется

Большое спасибо

...