簡體   English   中英

排序列標簽熊貓數據透視表

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

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