根据字符串值列对 pandas 数据框行进行排序

Sort pandas dataframe rows according to a string value column

我有以下数据框:

        month       price
0       April  102.478015
1      August   94.868053
2    December   97.278205
3    February  100.114510
4     January   99.419109
5        July   93.402928
6        June   96.114224
7       March  101.297762
8         May  102.905340
9    November   97.952169
10    October   95.606478
11  September   94.226803

我希望月份顺序一致(第一行的一月到第十二行的十二月)。请问我该怎么办?

如有必要,您可以复制此数据框,然后执行

pd.read_clipboard(sep='\s\s+')

在你的 jupyter notebook 上拥有数据框

将值转换为有序的 categoricals,因此可以使用 DataFrame.sort_values:

cats = ['January','February','March','April','May','June',
        'July','August','September','October','November','December']
df['month'] = pd.CategoricalIndex(df['month'], ordered=True, categories=cats)
#alternative
#df['month'] = pd.Categorical(df['month'], ordered=True, categories=cats)
df = df.sort_values('month')
print (df)
        month       price
4     January   99.419109
3    February  100.114510
7       March  101.297762
0       April  102.478015
8         May  102.905340
6        June   96.114224
5        July   93.402928
1      August   94.868053
11  September   94.226803
10    October   95.606478
9    November   97.952169
2    December   97.278205