在熊猫数据透视表中删除总和列,但保留行

时间:2019-07-01 22:39:21

标签: python pandas

所以我有一个pandas数据透视表,我想将列的总和保持在底部(所以总和行)。但是,当我说margins = True并且我不希望这样做时,还会添加一列。

我尝试删除列,但是从多索引表中删除列只会导致错误。如果我放了drop('All',axis = 1),它说KeyError:'All',如果我放了axis = 0,它摆脱了底部的总和(我想要的)。

artist_table = pd.pivot_table(total_df,
                              values=['Records Created', 
                                      'Tickets Sold'],
                              index=['artist name',
                                     'artist id'],
                              columns=['date'],
                              aggfunc=np.sum,
                              fill_value=0,
                              margins=True)

我想要的是:

                                 Leads Created       Revenue     
 date                             6/1                 6/2                                        
    artist_id    artist_name      
    XXX           YYY            x                   y            
    AAA           BBB            a                   b            
    All                         (x+a)             (y+b)    

我现在拥有的是:

                                Leads Created       Revenue     
date                              6/1                 6/2           All                                
artist_id    artist_name      
    XXX           YYY              x                   y          (x+y)
    AAA           BBB              a                   b          (a+b)
    All                           (x+a)             (y+b)                    

我希望右边的所有(行的总和)消失。谁能帮忙吗?预先谢谢你!

2 个答案:

答案 0 :(得分:0)

我最终使用此处建议的替代选项将数据透视表转换为数据框:

transform pandas pivot table to regular dataframe

...然后从该新数据框中删除“全部”列。

答案 1 :(得分:0)

您可以通过

交换标题级别
artist_table=artist_table.swaplevel(0,1,axis=1).sort_index(axis=1)

然后删除“全部”列

artist_table.drop("All", axis=1)

然后你可以交换级别

artist_table=artist_table.swaplevel(0,1,axis=1).sort_index(axis=1)