Панды: сгруппированы по группам - IDE: Pycharm

В системе типа .NET необходимо, чтобы типы имели уникальные имена. Хотя возможно создание экземпляров связанных общих типов (например, IEnumerable<System.Int32> или IEnumerable<System.String>), несвязанный общий тип может использоваться в определенных контекстах. В языке C # такой тип будет записан как IEnumerable<>, но в системе типов он будет обозначен как IEnumerable~1 [~ используется, чтобы избежать проблем с форматом]. Обратите внимание, что имя связанного родового типа начинается с имени несвязанного типа, поэтому, если несвязанный общий тип был вызван IEnumerable<> в системе типов, имя связанного родоначальника должно начинаться с IEnumerable<>, , в том числе указатели меньшего, чем больше, чем знаки .

2
задан KJoseph 6 March 2019 в 17:46
поделиться

1 ответ

Групповой агрегат - это то, что вы ищете:

Например:

import numpy as np
import pandas as pd

d = {'Name': ['foo1','foo2','foo3','foo2','foo3'], 
'Business': ['bar2','bar3','bar1','bar1','bar1'],
    'ID':['1','2','3','4','5'],
    'Revenue':[10000,12500,7500,3000,15000],
    'Margin':[300,500,100,300,200],
    'Quanity':[1,2,2,3,4]}

df = pd.DataFrame(data=d)

Вывод df:

 Business ID  Margin  Name  Quanity  Revenue                                                                           
0     bar2  1     300  foo1        1    10000                                                                           
1     bar3  2     500  foo2        2    12500                                                                           
2     bar1  3     100  foo3        2     7500                                                                           
3     bar1  4     300  foo2        3     3000                                                                           
4     bar1  5     200  foo3        4    15000   

Затем с помощью groupby: [119 ]

groupby_df_agg = df.groupby(['Name'])[('Revenue', 'Margin', 'Quanity')].agg(['sum'])

print(groupby_df_agg)

Выходные данные

     Revenue Margin Quanity                                                                                             
         sum    sum     sum                                                                                             
Name                                                                                                                    
foo1   10000    300       1                                                                                             
foo2   15500    800       5                                                                                             
foo3   22500    300       6   

Для расширения на более категориальные переменные вы можете использовать:

groupby_df_agg = df.groupby(['Name','Business'])[('Revenue', 'Margin','Quanity')].agg(['sum'])

Выходные данные

              Revenue Margin                                                                                          
                  sum    sum                                                                                          
Name Business                                                                                                         
foo1 bar2       10000    300                                                                                          
foo2 bar1        3000    300                                                                                          
     bar3       12500    500                                                                                          
foo3 bar1       22500    300 
0
ответ дан Edeki Okoh 6 March 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: