Pandas Pivot - суммировать два поля, зависимые и независимые от определенных столбцов - PullRequest
2 голосов
/ 04 октября 2019

предположим, с таким фреймом данных, как:

Name    |    Type    |    Year    |    Qty   | Amount
Mike        buy          2019        5          100          
James       return       2019        10         150
Mike        return       2019        15         200
James       buy          2019        20         250

Меня интересует суммирование Amount на Type, а затем сумма Qty независимо от type, например:

Name  |  Year  |  buy  |  return  |  Qty
Mike     2019    100         200     20
James    2019    250         150     30   

Как мне достичь этого как можно быстрее?

Я пытался: df=pd.pivot_table(df, values=['Amount,'Qty'], index=['Name','Type','Year'], columns=['Type'], aggfunc='sum').reset_index()

Однако, это объединяет Qty по buy и return вместо суммирования Qty независимо от Type.

1 Ответ

1 голос
/ 04 октября 2019

Группировка отличается, поэтому concat два groupby с:

pd.concat([df.groupby(['Name', 'Year', 'Type']).Amount.sum().unstack(-1),
           df.groupby(['Name', 'Year',]).Qty.sum()], 
          axis=1)

            buy  return  Qty
Name  Year                  
James 2019  250     150   30
Mike  2019  100     200   20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...