2015-11-25 45 views
1

我有一个数据帧,列DescriptionDayCountPython - 通过一周中的所有日子对数据帧进行排序

我在其上施加

df.sort_values(['Count'], ascending = False) 

,得到以下输出:

 Count  Day      Error Description 
261 4846 Thursday   N25846 External EMERGENCY STOP 
263 3993 Wednesday   N25846 External EMERGENCY STOP 
257 3303  Friday   N25846 External EMERGENCY STOP 
504 3227 Wednesday      N63 Handwheel? C 
795 2954 Thursday  P873 ENCLOSURE DOOR CAN BE OPENED 
797 2778 Wednesday  P873 ENCLOSURE DOOR CAN BE OPENED 
791 2644  Friday  P873 ENCLOSURE DOOR CAN BE OPENED 
796 2633 Tuesday  P873 ENCLOSURE DOOR CAN BE OPENED 
262 2480 Tuesday   N25846 External EMERGENCY STOP 
501 2157  Monday      N63 Handwheel? C 
601 2130 Thursday    P124 Magazine is running 
597 2130  Friday    P124 Magazine is running 
793 2047 Saturday  P873 ENCLOSURE DOOR CAN BE OPENED 
503 1983 Tuesday      N63 Handwheel? C 
599 1961 Saturday    P124 Magazine is running 
602 1921 Tuesday    P124 Magazine is running 
792 1900  Monday  P873 ENCLOSURE DOOR CAN BE OPENED 
603 1865 Wednesday    P124 Magazine is running 
502 1705 Saturday      N63 Handwheel? C 

我想知道是否有排序的数据帧通过所有以显示顶部错误分布的方式本周的日子。 预期输出:(假设N25846 External EMERGENCY STOP是最严重的错误,然后N63 Handwheel? C等..)

 Count  Day      Error Description 
261 4846 Thursday   N25846 External EMERGENCY STOP 
263 3993 Wednesday   N25846 External EMERGENCY STOP 
257 3303  Friday   N25846 External EMERGENCY STOP 
262 2480 Tuesday   N25846 External EMERGENCY STOP 
504 3227 Wednesday      N63 Handwheel? C 
501 2157  Monday      N63 Handwheel? C 
503 1983 Tuesday      N63 Handwheel? C 
502 1705 Saturday      N63 Handwheel? C 
795 2954 Thursday  P873 ENCLOSURE DOOR CAN BE OPENED 
797 2778 Wednesday  P873 ENCLOSURE DOOR CAN BE OPENED 
791 2644  Friday  P873 ENCLOSURE DOOR CAN BE OPENED 
796 2633 Tuesday  P873 ENCLOSURE DOOR CAN BE OPENED 
793 2047 Saturday  P873 ENCLOSURE DOOR CAN BE OPENED 
792 1900  Monday  P873 ENCLOSURE DOOR CAN BE OPENED 
601 2130 Thursday    P124 Magazine is running 
597 2130  Friday    P124 Magazine is running 
599 1961 Saturday    P124 Magazine is running 
602 1921 Tuesday    P124 Magazine is running 
603 1865 Wednesday    P124 Magazine is running 

回答

1

您可以用组通过,随后加入,其次是一种做到这一点。例如:

totals = df.groupby('Error Description').sum() 

joined = df.join(totals, on='Error Description', rsuffix='_total') 

result = joined.sort_values(['Count_total', 'Count'], ascending=False) 

输出是

>>> print(result) 

    Count  Day     Error Description Count_total 
795 2954 Thursday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
797 2778 Wednesday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
791 2644  Friday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
796 2633 Tuesday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
793 2047 Saturday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
792 1900  Monday P873 ENCLOSURE DOOR CAN BE OPENED  14956 
261 4846 Thursday  N25846 External EMERGENCY STOP  14622 
263 3993 Wednesday  N25846 External EMERGENCY STOP  14622 
257 3303  Friday  N25846 External EMERGENCY STOP  14622 
262 2480 Tuesday  N25846 External EMERGENCY STOP  14622 
601 2130 Thursday   P124 Magazine is running  10007 
597 2130  Friday   P124 Magazine is running  10007 
599 1961 Saturday   P124 Magazine is running  10007 
602 1921 Tuesday   P124 Magazine is running  10007 
603 1865 Wednesday   P124 Magazine is running  10007 
504 3227 Wednesday     N63 Handwheel? C   9072 
501 2157  Monday     N63 Handwheel? C   9072 
503 1983 Tuesday     N63 Handwheel? C   9072 
502 1705 Saturday     N63 Handwheel? C   9072 

注意,这不符合您的示例输出,但它是由错误总数的正确排序。看看你的示例输出,也许你想要的是用max()替换sum()以上 - 从你的问题来看,我不完全清楚。

+0

您应该计算Count_max代替,然后进行排序上Count_max和计数。这会产生上面的表格。 –

+0

是的,我在回答结束时注意到了这一点。我的解决方案解答了我解释的问题。 – jakevdp

+0

@jakevdp - 谢谢:) –

1

与@Jakevdp类似,请考虑使用groupby.apply()函数在每个错误描述中创建最大计数的新列。然后,按照它和错误进行排序。

def maxcount(row): 
    row['MaxCount'] = row['Count'].max() 
    return row 

df = df.groupby(['Error Description']).apply(maxcount) \ 
       .sort(['MaxCount', 'Error Description'], ascending=[0,0]) 

输出

Count  Day     Error Description MaxCount 
4846 Thursday  N25846 External EMERGENCY STOP  4846 
3993 Wednesday  N25846 External EMERGENCY STOP  4846 
3303  Friday  N25846 External EMERGENCY STOP  4846 
2480 Tuesday  N25846 External EMERGENCY STOP  4846 
3227 Wednesday     N63 Handwheel? C  3227 
2157  Monday     N63 Handwheel? C  3227 
1983 Tuesday     N63 Handwheel? C  3227 
1705 Saturday     N63 Handwheel? C  3227 
2954 Thursday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
2778 Wednesday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
2644  Friday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
2633 Tuesday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
2047 Saturday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
1900  Monday P873 ENCLOSURE DOOR CAN BE OPENED  2954 
2130 Thursday   P124 Magazine is running  2130 
2130  Friday   P124 Magazine is running  2130 
1961 Saturday   P124 Magazine is running  2130 
1921 Tuesday   P124 Magazine is running  2130 
1865 Wednesday   P124 Magazine is running  2130 
相关问题