我在熊猫中有一个时间段,日期是在月底:

import pandas as pd
s = pd.Series({
    '2018-04-30':     0,
    '2018-05-31':     1,
    '2018-06-30':     0,
    '2018-07-31':    1,
    '2018-08-31':    0,
    '2018-09-30':    1,
})
s.index = pd.to_datetime(s.index)

当我用matplotlib绘制这个图时,我得到了我期望的结果,在月底点,线在2018年5月之前开始:
import matplotlib.pyplot as plt
plt.plot(s)

python -  Pandas 的日期在月初被错误地绘制-LMLPHP
但是熊猫的本地绘图功能在月初绘制点:
s.plot()

python -  Pandas 的日期在月初被错误地绘制-LMLPHP
我以为这可能只是熊猫把“4月30日”标记为“4月”,但事实似乎并非如此:
s2 = pd.Series([0.2, 0.7], index=pd.date_range('2018-05-01', '2018-05-02'))
s.plot()
s2.plot()

python -  Pandas 的日期在月初被错误地绘制-LMLPHP
这是熊猫身上的虫子还是我在这里做错了什么?

最佳答案

这好像是大熊猫的虫子。要获得与matplotlib相同的结果,可以始终使用x_compat=True。这样还可以使用matplotlib.dates格式化程序和定位器。

s = pandas.Series(...)
s.plot(x_compat=True)

08-19 20:21