【问题标题】:How to make pandas pivot table look like excel pivot table如何使熊猫数据透视表看起来像 excel 数据透视表
【发布时间】:2020-02-23 08:43:59
【问题描述】:

pivot table in excel

df=pd.DataFrame({'Fruit':['Apple', 'Orange', 'Apple', 'Apple', 'Orange', 'Orange'],
            'Variety':['Fuji', 'Navel', 'Honeycrisp', 'Gala', 'Tangerine', 'Clementine'],
            'Count':[2, 5, 5, 1, 8, 4]})
df_pvt=pd.pivot_table(df, index=['Fruit', 'Variety'], values=['Count'], aggfunc=np.sum)
df_final=pd.concat([
d.append(d.sum().rename((k, 'SubTotal')))
for k, d in df_pvt.groupby(level=0)
]).append(df_pvt.sum().rename(('','GrandTotal'))) 

subtotal

df_final.to_excel('pvt.xlsx')

输出这个exported to excel

1) 如何让 pandas 中生成的数据透视表看起来像 excel 数据透视表? 2)如何像excel一样获得第一行的小计?

谢谢。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    IIUC,

    df_grand = df[['Count']].sum().T.to_frame(name='Count').assign(Fruit='Grand Total', Variety='').set_index(['Fruit','Variety'])
    
    df_sub = df.groupby('Fruit')[['Count']].sum().assign(Variety='').set_index('Variety', append=True)
    
    df_excel = df.set_index(['Fruit','Variety']).append(df_sub).sort_index().append(df_grand)
    

    输出:

                            Count
    Fruit       Variety          
    Apple                       8
                Fuji            2
                Gala            1
                Honeycrisp      5
    Orange                     17
                Clementine      4
                Navel           5
                Tangerine       8
    Grand Total                25
    

    【讨论】:

    • 谢谢。如果我输入 Variety='SubTotal' 而不是品种 = ' ',它会再次为每个组排在底部。有没有办法解决这个问题?
    • 使用数字或按字母顺序排列或创建 pd.Categorical 数据强制顺序。这些是唯一的方法。
    猜你喜欢
    • 2021-02-28
    • 2023-01-11
    • 2017-01-14
    • 2019-04-28
    • 2012-04-15
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多