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