[英]Python - Sort dataframe through all days of the week
我有一个包含Description
, Day
和Count
列的数据框。
我申请了
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
您可以先进行分组,再进行联接,再进行排序。 例如:
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
请注意,这与示例输出不匹配,但是按总错误计数排序是正确的。 查看您的示例输出,也许您想要的是将上面的sum()
替换为max()
-从您的问题来看,这对我来说还不是很清楚。
与@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])
OUTPUT
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.