我如何自定义日期并在 python 的 matplotlib 中按顺序绘制它们?

How can I customize date and plot them ordered in python's matplotlib?

我有一个包含日期列的数据集,如下所示:

| Date     | Another column |
| -------- | -------------- |
| 1.2019   | row1           |
| 2.2019   | row2           |
| 11.2018  | row3           |
| 8.2021   | row4           |
| 6.2021   | row5           |

Date 列被解释为 float dtype 但实际上 1.2019 表示 2019 年的第 1 个月 - 即 1 月。我将其更改为 string 类型并且效果很好,至少看起来是这样。但是我想根据数据集的第 2 列来绘制这些数据,但是当我绘制它时:

x 轴未排序。好吧,为什么会这样?字符串 1.20192.2019 之间没有顺序关系:无法知道第一个是 2019 年一月,第二个是二月。我想过使用正则表达式,甚至将 1.2019 映射到 jan-2019 但问题仍然存在:没有日期排序关系的字符串。我知道有 datetime 方法,但我不知道这是否对我有帮助。

我该如何进行?这可能很容易,但我被困在这里了!

转换为日期时间 pandas.to_datetime:

df['Date'] = pd.to_datetime(df['Date'].astype(str), format='%m.%Y')

或者如果您的 pandas 版本在缺少日期时拒绝转换:

pd.to_datetime('1.'+df['Date'].astype(str), format='%d.%m.%Y')

输出:

        Date Another column
0 2019-01-01           row1
1 2019-02-01           row2
2 2018-11-01           row3
3 2021-08-01           row4
4 2021-06-01           row5