如何调整DataFrame中分类类型星期几的显示顺序?
问题:DataFrame中星期几分类顺序不符合需求,如何调整?
已知day_name列的数据类型已定义为category,但当前分类顺序为['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuesday', 'Wednesday'],不符合Sunday, Monday, Tuesday, Wednesday……的正确顺序。执行以下代码计算会员的星期众数时,分类顺序不符合预期:
# calculate the mode of week-day of members mode_week_day_member = bike_data[bike_data['member_casual'] == 'member'] mode_week_day_member = mode_week_day_member['day_name'].mode() mode_week_day_member
执行后输出:
0 Wednesday Name: day_name, dtype: category Categories (7, object): ['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuesday', 'Wednesday']
需要调整星期几的分类顺序为指定的正确顺序,该如何操作?
解决方案
你可以通过重新指定category的自定义分类顺序来解决这个问题,具体操作如下:
定义正确的星期顺序列表
先写出你需要的星期排序:week_order = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']重新设置
day_name列的分类规则
使用cat.set_categories()方法覆盖原有的分类顺序,并设置ordered=True让该列遵循指定顺序:bike_data['day_name'] = bike_data['day_name'].cat.set_categories(week_order, ordered=True)验证效果
此时再执行原来的众数计算代码,或者查看列的分类信息,就能看到顺序已经更新:# 查看分类信息 print(bike_data['day_name'].cat.categories) # 输出:Index(['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dtype='object')
修改完成后,后续对day_name列的排序、统计(比如众数计算、分组聚合)都会按照你指定的星期顺序执行。
内容的提问来源于stack exchange,提问作者David L
相关产品推荐
相关产品推荐

