开发者社区> 问答> 正文

如何在groupby或pivot_table之后的特定级别使用多索引数据aframe对数据求和

这是我的问题的示意图。 之后我跑“groupby”或“pivot_table”我dataframe如下,我得到了一个dataframe②与“A”、“B”指数。然而,我不需要更多的数据。因此,我希望在特定的索引级别聚合数据。 然后我可以得到最后一个dataframe③。b应该汇总e\f索引数据,1+1 = 2 这个函数与Excel中的折叠行为类似。我检查了文档(pivot_table),但是“margin”这个参数不适合这个要求。 谢谢! !

问题来源StackOverflow 地址:/questions/59383668/how-to-sum-the-data-in-specific-level-after-groupby-or-pivot-table-with-multi-in

展开
收起
kun坤 2019-12-27 10:11:54 554 0
1 条回答
写回答
取消 提交回答
  • 我不知道这样一个函数,但这里有一个变通方法:

    df
         C
    A B
    a p  1
      q  1
    d r  2
      s  2
    b t  3
      v  3
      w  3
    c x  4
      y  4
    
    fld=["d","b","c"]
    nfidx=df.index.levels[0].difference(fld)
    
       Index(['a'], dtype='object', name='A')
    
    
    df2= df.loc[fld].groupby("A").sum()
    
           C
        A
        b  9
        c  8
        d  4
    
    mi= pd.MultiIndex.from_product([df2.index,[np.nan]],names=["A","B"])
    
        MultiIndex([('b', nan),
                    ('c', nan),
                    ('d', nan)],
                   names=['A', 'B'])
    
    df2.index=mi
    
               C
        A B
        b NaN  9
        c NaN  8
        d NaN  4
    
    pd.concat([ df.loc[nfidx],df2])
    
               C
        A B
        a p    1
          q    1
        b NaN  9
        c NaN  8
        d NaN  4
    
    2019-12-27 10:12:02
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载