Pandas:按IDE聚合和分组:Pycharm

2024-04-26 09:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

QQ-IDE:Pycharm-我正在使用下面的Dataframe示例格式

Name       Business        SegmentID   Revenue    Margin  OrderQuantity
James      Commercial      1001         1500      100     1
Joe        Consumer        1002         800       10      1
James      Commercial      1003         1900      110     2
James      Commercial      1004         1800      105     3
Samuel     Commercial      1005         1800      105     1

我想将其聚合为以下格式

^{pr2}$

到目前为止我做了什么?

从pyodbc导入数据,传递到pandas dataframe

df.groupby(['Name']).Revenue.sum().Margin.sum().OrderQuantity.sum()

我无法得到所需的输出。在使用pyodbc时,有什么需要我特别关注的吗。在


Tags: namemargin示例dataframe格式businessidepycharm
2条回答

可以使用聚合方法。在

df.groupby(['Name']).agg({'Revenue':'sum, 'Margin': 'sum', 'OrderQuantity':'sum'})

groupby聚合就是您要查找的:

例如:

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)

测向输出:

^{pr2}$

然后使用groupby:

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 

相关问题 更多 >