python - Pandas 系列按月份索引排序

标签 python pandas

Dec    47
Nov    36
Oct    14
Sep     2
Jan     2
Aug     2
May     1
Apr     1
Jun     1
Jul     1
Feb     1
Name: date, dtype: int64

我想按月对索引列为月的上述系列进行排序。但是,排序函数不是按月份的日历顺序排序,而是按月份名称的字典顺序排序。如何正确排序以上内容?猜猜我必须指定索引类型是月份而不是字符串。任何帮助表示赞赏。下面的代码片段。

import calendar
movies = release_dates[release_dates.title.str.contains('Christmas') & (release_dates.country=='USA')]
movies = movies.date.dt.month.apply(lambda x: calendar.month_abbr[x])
counts = movies.value_counts()
counts

最佳答案

您可以使用已排序的 CategoricalIndexsort_index :

cats = ['Jan', 'Feb', 'Mar', 'Apr','May','Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec']
df.index = pd.CategoricalIndex(df.index, categories=cats, ordered=True)
df = df.sort_index()

print (df)
     date
Jan     2
Feb     1
Apr     1
May     1
Jun     1
Jul     1
Aug     2
Sep     2
Oct    14
Nov    36
Dec    47

或者使用DataFrame.reindex - 但如果缺少某些值,请添加 NaN 行:

df = df.reindex(cats)

关于python - Pandas 系列按月份索引排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816144/

相关文章:

python - CBC - 知道 "why"程序不可行

python-3.x - 从产品描述中提取数字数据

python - 如何使 environ ['PATH_INFO' ] 在我的 nginx + uwsgi 环境中可用?

python - 将默认字典中的键插入到前面

python - 应用函数 n 次,使用上一个的输出作为下一个的输入

pandas - 迭代 Pandas 数据框和字典项

Python:基于 Pandas 中的 2 列分箱

pandas - 你如何用标量划分 Pandas 列?

python - 如何在pyplot中自动标注最大值

python - 读取 URLLIB 中从不同起始字符开始的 URL