You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas字符串索引转为日期格式实现DataFrame时间排序

Pandas 按「月份缩写+年份」字符串索引排序实现方案

问题描述

待处理的DataFrame对象df特征如下:

  • 索引为字符串类型,值格式为「三位月份英文缩写+空格+四位年份」,例如Jan 2021、Feb 2022
  • 数据未按时间先后顺序排列,原始数据样例:
0
Jan 2021    0.852144
Jan 2022    0.442388
Feb 2021    0.406946
Feb 2022    0.296960
       :           :
Nov 2021    0.829171
Nov 2022    0.601725
Dec 2021    0.214810
Dec 2022    0.673403             
  • 目标效果:按时间从早到晚排序,从2021年1月起逐月递增,目标样例:
0
Jan 2021    0.686585
Feb 2021    0.214810
Mar 2021    0.852144
Apr 2021    0.920720
       :           :
Sep 2022    0.770413
Oct 2022    0.751213
Nov 2022    0.601725
Dec 2022    0.924836

实现步骤

核心思路是先把字符串格式的时间索引转为pandas可识别的datetime类型,再按索引排序即可,核心代码仅2行:

import pandas as pd

# 将字符串索引转为datetime类型,指定解析格式避免报错、提升解析速度
df.index = pd.to_datetime(df.index, format="%b %Y")
# 按时间索引升序排序
df = df.sort_index()

可选配置

如果你希望排序后索引仍然显示为Jan 2021的字符串格式,而不是datetime默认的2021-01-01样式,可以在排序完成后加一行代码转回原格式:

df.index = df.index.strftime("%b %Y")

参数说明

  • format="%b %Y":%b匹配三位英文月份缩写(Jan、Feb等),%Y匹配四位数字年份,明确指定格式比自动解析速度更快,也能避免格式识别错误
  • sort_index()默认按升序排列,完全满足从早到晚的时间排序需求,需要倒序排列时传入参数ascending=False即可

内容的提问来源于stack exchange,提问作者Stacey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:36:21