所以我有一個資料框架
testdf = pd. DataFrame({"loc" : ["ab12","bc12","cd12", "ab12", "bc13","cd12"], "月" 。
["Jun21","Jun21","July21"。 "July21","Aug21","Aug21"] ,"dept" 。
["dep1","dep2","dep3","dep2"。 "dep1","dep3"], " count": [15, 16, 15, 92, 90, 2]})
這看起來像這樣:
當我對它進行透視時,
df = pd. pivot_table(testdf, values = ['count'], index = ['loc','dept'], columns = ['month'], aggfunc=np. sum).reset_index()
df.columns = df.columns.droplevel(0)
df
它看起來像這樣:
我正在尋找一個排序函式,該函式將只按順序對月份列進行排序,而不是對前兩列即loc & dept進行排序。
當我嘗試這樣做時:
df. sort_values(by = ['Jun21'],ascending = False, inplace = True, axis = 1, ignore_index=True)[ 2:
它給我的錯誤。
我希望列的順序是Jun21, Jul21, Aug21
我正在尋找一種可以使其動態化的方法,當月份發生變化時,我不需要手動改變序列。
如果有任何提示,我將非常感激。
uj5u.com熱心網友回復:
我們可以通過在datetime中轉換列months來開始:
>>> testdf.month = (pd.to_datetime(testdf. months, format="%b%y"/span>, errors='coerce'/span>)
>>> testdf
地方月數部門數
0 ab12 202106-01 dep1 15
1bc12 2021-06-01 dep2 16
2cd12 2021-07-01 dep3 15
3 ab12 2021-07-01 Dep2 92
4bc13 2021-08-01 dep1 90
5 CD12 2021-08-01 Dep3 2
然后,我們應用你的代碼來獲得pivot :
>>> df = pd. pivot_table(testdf, values = ['count'], index = ['loc','dept'], columns = ['month'], aggfunc=np. sum).reset_index()
>>> df.columns = df.columns.droplevel(0)
>>>df
月份 NaT NaT 2021-06-01 2021-07-01 2021-08-01
0 ab12 dep1 15.0 NaN NaN
1 ab12 dep2 NaN 92.0 NaN
2 bc12 dep2 16.0 NaN NaN
3 bc13 dep1 NaN NaN 90.0 NaN
4 cd12 dep3 NaN 15.0 2.0
最后,我們可以使用strftime重新格式化列名,以獲得預期的結果:
>>> df.columns = df.columns.map(lambda t: t. strftime('%b%y') if pd.notnull(t) else ' )
>>> df
月份 21年6月 21年7月 21年8月
0 ab12 dep1 15.0 NaN NaN
1 ab12 dep2 NaN 92.0 NaN
2 bc12 dep2 16.0 NaN NaN
3 bc13 dep1 NaN NaN 90.0 NaN
4 cd12 dep3 NaN 15.0 2.0
uj5u.com熱心網友回復:
如果你使用groupby,那就非常簡單了
df = testdf.groupby(['loc', 'dept', 'month']) 。 sum().unstack(level=2)
df = df.reindex(['Jun21'/span>, 'July21'/span>, 'Aug21'/span>], axis=1, level=1)
輸出
count
月 6月21日 7月21日 8月21日
本地部門
ab12 dep1 15.0 NaN NaN
dep2 NaN 92.0 NaN
bc12 dep2 16.0 NaN NaN
bc13 dep1 NaN NaN 90.0 NaN
cd12 dep3 NaN 15.0 2.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310788.html
標籤:
下一篇:如何對同一指數進行分類
