Python 使用具有常规月顺序而不是字母顺序的交叉表后重新索引列

Python 使用具有常规月顺序而不是字母顺序的交叉表后重新索引列,python,pandas,dataframe,crosstab,Python,Pandas,Dataframe,Crosstab,使用交叉表后,我有以下输出,请参见所附图像: 我的问题是:如何根据年份位置而不是字母顺序按月对列进行排序?来自日历导入月份\u缩写 df.reindex(列=月份缩写[1:]) 在内置模块中,有一个表示月份的缩写。但是,它的长度是13,因为它在索引0处包含一个空字符串(以简化常规索引,如3是用于三月等)。简而言之,您可以使用它在列上重新索引数据框如果您想继续使用熊猫只需创建一个带有月频率的年度日期范围,然后strftime即可获得缩写 import pandas as pd cols =

使用交叉表后,我有以下输出,请参见所附图像:

我的问题是:如何根据年份位置而不是字母顺序按月对列进行排序?

来自日历导入月份\u缩写
df.reindex(列=月份缩写[1:])

在内置模块中,有一个表示月份的缩写。但是,它的长度是13,因为它在索引0处包含一个空字符串(以简化常规索引,如3是用于三月等)。简而言之,您可以使用它在
列上重新索引数据框

如果您想继续使用
熊猫
只需创建一个带有月频率的年度日期范围,然后
strftime
即可获得缩写

import pandas as pd

cols = pd.date_range('2010-01-01', '2010-12-31', freq='MS').strftime('%b')
#Index(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
#       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']),

df = df.reindex(cols, axis=1)

pd.crosstab(df['col1',df['col2'])reindex(['Jan','Feb',…],axis=1)
。谢谢@QuangHoang,它成功了!