【问题标题】:Pandas: Multiple Grand Totals in a Summary DataframePandas:汇总数据框中的多个总计
【发布时间】:2016-10-12 13:32:22
【问题描述】:

在我尝试学习 Python 时,为这个菜鸟问题道歉。期待加快步伐并回馈社会

假设我有以下数据,

YEAR         SECTOR    PROFIT   STARTMVYEAR TOTALPROFIT STARTMV
IBM         TECHNOLOGY  -500    2500        500         1500
APPLE       TECHNOLOGY   800    4000        300         4500
GM          INDUSTRIAL   250    1000          0         1250
CHRYSLER    INDUSTRIAL   600    3000        100         3500

我想创建一个如下所示的摘要

SECTOR      PROFITYEAR  TOTALPROFIT
TECHNOLOGY     .046       .133
INDUSTRIAL     .213       .021

对于每个组,我们有 sum(PROFIT)/sum(STARTMVYEAR)sum(TOTALPROFIT)/sum(STARTMV)

如果我只想为第一个基准测试做它,我可以做

by_profit_totals =(df.groupby(['SECTOR'])['PROFIT'].sum()/by_first_count.groupby(['SECTOR'])['STARTMVYEAR'].sum())

但是我该如何为这两者做呢?另外,我可以使用一个简单的函数来获取例如利润和 startmvyear 并返回汇总值吗?

【问题讨论】:

    标签: numpy pandas dataframe plyr aggregation


    【解决方案1】:

    您可以使用 groupby 聚合 cython optimized sum 然后 div by numpy array 创建 values

    g = df.groupby('SECTOR').sum()
    print (g[['PROFIT','TOTALPROFIT']].div( g[['STARTMVYEAR','STARTMV']].values).reset_index())
           SECTOR    PROFIT  TOTALPROFIT
    0  INDUSTRIAL  0.212500     0.021053
    1  TECHNOLOGY  0.046154     0.133333
    

    【讨论】:

    • 感谢您的接受。很高兴我能帮助你。美好的一天!
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 2020-02-24
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2020-08-22
    • 2021-07-20
    相关资源
    最近更新 更多