[英]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.