【问题标题】:Sum values for second level of multi-index in pandas dataframe熊猫数据框中第二级多索引的总和值
【发布时间】:2019-06-27 15:53:52
【问题描述】:

我有一个熊猫DataFrame,它的多重索引为'County ID''County'。有一个'Workforce' 列,我需要对列中的所有值求和,然后将其添加到DataFrame 中的另一列,但我只需要对每个级别中的值求和。但是,我一直无法让 pandas 以这种方式求和。

我尝试了许多不同的方法,包括让其他 DataFrames 对每个索引求和,然后重新添加到另一个 DataFrame。我也尝试过循环,但无法将列中的所有值加在一起。

我的数据框如下所示:

*COUNTY ID*   *COUNTY*             INDUSTRY  WORKFORCE  TOTAL WORKFORCE
12001      |  Alachua County, FL    Retail     25329        0
           |  Alachua County, FL    Health     22914        0
8013       |  Boulder County, CO    Education  24123        0
           |  Boulder County, CO    Finance    19478        0
# And so on in that manner 

'TOTAL WORKFORCE' 是我作为int64 添加的一个虚拟列,以便我可以根据需要的总和在其中放置一个数值。

我想统计每个县的所有劳动力数量,然后将它们加在一起,如下所示:

*COUNTY ID*   *COUNTY*             INDUSTRY  WORKFORCE  TOTAL WORKFORCE
12001      |  Alachua County, FL    Retail     25329        48243
           |  Alachua County, FL    Health     22914        48243
8013       |  Boulder County, CO    Education  24123        43601
           |  Boulder County, CO    Finance    19478        43601

任何帮助将非常感谢!

【问题讨论】:

    标签: python pandas dataframe sum multi-index


    【解决方案1】:

    level=0 上的 groupby 并使用 sum 进行转换应该可以:

    df['TOTALWORKFORCE'] = df.groupby(level=0).WORKFORCE.transform('sum')
    

    【讨论】:

    • 太棒了,非常感谢!完美运行
    【解决方案2】:

    更短的版本:

    df['TOTALWORKFORCE'] = df.sum(level=0).WORKFORCE
    

    编辑: 分配给

    df['TOTALWORKFORCE']
    

    将不起作用,正如Mark Wang 正确提到的那样。所以这个解决方案只能做每个国家的总和,没有分配回原来的DataFrame。

    感谢您的评论!

    【讨论】:

    • 鉴于汇总的数据集具有不同的索引,我认为列分配不起作用
    猜你喜欢
    • 2021-12-30
    • 2023-04-02
    • 2018-04-25
    • 2019-05-21
    • 2021-09-27
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多