我如何自定义日期并在 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.2019
和 2.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
我有一个包含日期列的数据集,如下所示:
| 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.2019
和 2.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