Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据透视表的排序列标签_Python_Pandas - Fatal编程技术网

Python 数据透视表的排序列标签

Python 数据透视表的排序列标签,python,pandas,Python,Pandas,另一个熊猫排序问题(尝试了所有当前的SO问题,但没有找到任何解决方案) 我有一个pandas pivot\u表如下: 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

另一个熊猫排序问题(尝试了所有当前的SO问题,但没有找到任何解决方案)

我有一个
pandas pivot\u表
如下:

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"]]

df.pivot\u表
生成数据帧。如果你在台词之后做了这样的事情会怎么样:

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])])]
要执行此操作,您还必须声明一个带有所需顺序的dict:

your_dict = {1: 'first', 3: 'third', 2: 'second'}

可以使用lambda和dict对元组进行排序:

pt = pt[sorted(df.columns.tolist(), key=lambda tup: list(your_dict.keys())[list(your_dict.values()).index(tup[1])])]
要执行此操作,您还必须声明一个带有所需顺序的dict:

your_dict = {1: 'first', 3: 'third', 2: 'second'}

在/tooltrack/summary/“['third''first''second']处给我一个
键错误,不在索引中”
只需将'second'更改为'sec'。从上面的数据框来看抱歉-它实际上是数据框中的“秒”,我输入了示例。在/tooltrack/summary/“['third''first''second']处给我一个
键错误,不在索引中”
只需将“second”更改为“sec”。从上面的数据框来看抱歉-它实际上是数据框中的“第二个”,我打错了这个例子。如果你能在问题开头的轴之前添加原始数据,这将使理解更容易,因为你只显示转换,我们必须猜测起始点。如果你能在问题开头的轴之前添加原始数据,这将使理解更容易因为你只展示了变换,我们必须猜测起始点。