Сгруппируйте по двум столбцам в кадре данных, затем отобразите средние значения двух других столбцов. - PullRequest
0 голосов
/ 25 мая 2018

Образец моего datframe, df_Done_Avg_Salesperson_Volume

    state   currency_str    sales_person_name2  rfq_qty    rfq_qty_CAD_Equiv
    Done      USD           AY                  200000.0    155720.0
    Done      USD           AY                  1000000.0   778600.0
    Done      USD           AY                  200000.0    155720.0
    Done      GBP           YJJ                 25000000.0  14140000.0
    Done      GBP           YJJ                 2500000.0   1946500.0

Я бы хотел сгруппировать по sales_person_name2 и currency_str, но отобразить среднее значение rfq_qty и rfq_qty_CAD_Equiv.

sales_person_name2  currency_str`   Avg rfq_qty  Avg rfq_qty_CAD_Equiv
AY                  USD             466666.6667  363346.6667
YJJ                 GBP             13750000    8043250

Когда я пытаюсь объединить два, я получаю ошибку кортежа

d = {
        ('rfq_qty',np.mean)
        ('rfq_qty_CAD_Equiv',np.mean)
    }
display(df_Done_Avg_Salesperson_Volume.groupby(['sales_person_name2','currency_str'])['rfq_qty','rfq_qty_CAD_Equiv'].agg(d).reset_index())

TypeError: 'tuple' object is not callable

Есть ли способ группировать по ряду столбцов, но отображать статистические суммирования по двум другим столбцам?

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете просто использовать:

df.groupby(['sales_person_name2','currency_str'], as_index=False)['rfq_qty','rfq_qty_CAD_Equiv'].mean()

Вывод:

  sales_person_name2    currency_str    rfq_qty        rfq_qty_CAD_Equiv
0   AY                   USD       466666.6666666667    363346.6666666667
1   YJJ                  GBP          13750000.0           8043250.0

Если вы должны использовать .agg(), вам нужен словарь.

d = {
        'rfq_qty':np.mean,
        'rfq_qty_CAD_Equiv':np.mean
    }
df.groupby(['sales_person_name2','currency_str'], as_index=False)['rfq_qty','rfq_qty_CAD_Equiv'].agg(d))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...