簡體   English   中英

按 pandas 中的數據訂購 pivot 表

[英]Order a pivot table by data in pandas

我有以下 dataframe。

在此處輸入圖像描述

我需要以下格式的 pivot 表:

Category  Jul-18   Aug-18 Sep-18 Oct-18 Nov-18  Dec-18 Jan-19 Feb-19 Mar-19

Batter     55000    80000  5500   92000  20000  .        .      .     .  
Home Food  80000    92000  55000  80000  5500   .        .      .     .   

我通過使用 pivot 表 function 的 pandas 實現了這一點:

pd.pivot_table(data, values = ['Revenue'],index = ['Category'],columns = [data.MonthYear], aggfunc= {'Revenue':np.sum},fill_value=0).sort_index(axis=1,level=1)

這樣做的問題是 Month year 列是按字母順序排序的,而不是根據日期排序的。

在此處輸入圖像描述

我嘗試使用以下方法將 MonthYear 列更改為日期時間格式:

data['MonthYear'] = pd.to_datetime(data['MonthYear'], format='%b-%Y').dt.to_period('M')

這解決了排序問題,但視覺是這次的問題:

在此處輸入圖像描述

我需要列的格式為 %b-%y(1 月 20 日、2 月 20 日等),並且還需要根據日期進行排序。 請問這里有什么幫助嗎?

您可以在旋轉后更改月份的格式,也可以從pivot_table中刪除列表[]以避免MultiIndex

data['MonthYear'] = pd.to_datetime(data['MonthYear'], format='%b-%Y').dt.to_period('M')

df = pd.pivot_table(data, 
                    values = 'Revenue',
                    index = 'Category',
                    columns = 'MonthYear',
                    aggfunc='sum',
                    fill_value=0)

df.columns = df.columns.strftime('%b-%Y')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM