[英]Sorting column label pandas pivot table
另一個熊貓排序問題(嘗試了所有當前的 SO 並沒有找到任何解決方案)。
我有一個像這樣的pandas pivot_table
:
rows = ['Tool_Location']
cols = ['shift_date','Part_Number', 'shift']
pt = df.pivot_table(index='Tool_Location', values='Number_of_parts', dropna=False, fill_value ='0', columns=cols, aggfunc='count')
產生:
Shift date 10/19
Part_number 40001
shift first second third
tool_loc
T01 0 1 0
T02 2 1 0
我想切換班次標簽的順序,所以它是third first second
編輯:
越來越接近解決方案,但沒有看到它。
使用:
col_list = pt.columns.tolist()
output:
[('10/20/16', 'first'), ('10/20/16', 'second'), ('10/20/16', 'third'), ('10/21/16', 'first'), ('10/21/16', 'second'), ('10/21/16', 'third')]
任何人都知道如何動態重新排序項目,以便:
[('10/20/16', 'third'), ('10/20/16', 'first'), ('10/20/16', 'second'), ('10/21/16', 'first'), ('10/21/16', 'second'), ('10/21/16', 'second')]
因為那樣我們就可以使用 pt = pt[col_list] 對列重新排序
df.pivot_table
產生一個數據幀。 如果你在你的台詞之后做這樣的事情怎么辦:
pt = pt[["third","first","second"]]
您可以使用 lambda 和 dict 對元組進行排序:
pt = pt[sorted(df.columns.tolist(), key=lambda tup: list(your_dict.keys())[list(your_dict.values()).index(tup[1])])]
為此,您還聲明了一個具有所需順序的字典:
your_dict = {1: 'first', 3: 'third', 2: 'second'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.