首页 > 解决方案 > 使用自定义分类索引顺序在 Python 中重新排序热图行

问题描述

我有以下数据框

索引是星期几,列是从 0 到 23(一天中的小时)的数字 单元格值是计数

    0  1  2 ....
Mon 2  2  4
Tue 5  6  2
Wed 3  1  1
.
.
.

数据框是

df.crosstab(df['DoW'],df['Hour'])

我尝试使用

hourdow.reindex(["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun'])

要对 Dataframe 进行排序,但是当我绘制图表时,索引仍然会在热图上按字母顺序排序。无论如何要重新排序行?

标签: pythonpandasseaborn

解决方案


您可以df['DoW']先设置为类别:

import seaborn as sns
import pandas as pd

days_order = ["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun']
df = pd.DataFrame({'Dow':np.random.choice(days_order,100),
                  'Hr':np.random.randint(0,4,100)})
df['Dow'] = pd.Categorical(df['Dow'], 
                           categories=days_order,
                           ordered=True)

sns.heatmap(pd.crosstab(df['Dow'],df['Hr']))

在此处输入图像描述


推荐阅读