我正在嘗試使用 pivot_table 功能在 Python pandas 包中旋轉一些資料,但作為其中的一部分,我有一個特定的定制順序,我希望看到我的列回傳 - 由資料框中已經存在的 Sort_Order 欄位確定。因此,對于測驗示例:
raw_data = {'Support_Reason' : ['LD', 'Mental Health', 'LD', 'Mental Health', 'LD', 'Physical', 'LD'],
'Setting' : ['Nursing', 'Nursing', 'Residential', 'Residential', 'Community', 'Prison', 'Residential'],
'Setting_Order' : [1, 1, 2, 2, 3, 4, 2],
'Patient_ID' : [6789, 1234, 4567, 5678, 7890, 1235, 3456]}
Data = pd.DataFrame(raw_data, columns = ['Support_Reason', 'Setting', 'Setting_Order', 'Patient_ID'])
Data
然后轉:
pivot = pd.pivot_table(Data, values='Patient_ID', index=['Support_Reason'],
columns=['Setting'], aggfunc='count',dropna = False)
pivot = pivot.reset_index()
pivot
這正是我希望我的表看起來的樣子,除了列默認為 AZ 排序。我希望它們按照 Setting_Order 列按升序排列 - 這樣將是護理、住宅、社區然后是監獄的順序。是否有一些額外的語法可以添加到我的 pd.pivot_table 代碼中,請讓這成為可能?
我意識到有一些不同的解決方法,最簡單的是之后重新排序列(!)但我想避免硬編碼列名,因為這些會隨著時間而改變(標題和它們的順序) 并且 Setting 和 Setting_Order 欄位將在單獨的參考表中進行管理。因此,任何可以避免在代碼中列出設定的答案都是非常理想的。
uj5u.com熱心網友回復:
col_order = list(Data.sort_values('Setting_Order')['Setting'].unique())
pivot[col_order ['Support_Reason']]
這有幫助嗎?
uj5u.com熱心網友回復:
嘗試:
ordered = df.sort_values("Setting_Order")["Setting"].drop_duplicates().tolist()
pivot = pivot[list(pivot.columns.difference(ordered)) ordered]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454549.html
上一篇:1個月前的值滯后
