Python 打印数据系列时设置日期时间索引的时间格式

Python 打印数据系列时设置日期时间索引的时间格式,python,pandas,matplotlib,timestamp,Python,Pandas,Matplotlib,Timestamp,我有一个带有DatetimeIndex的熊猫数据帧,每月(M)一次。然而,当我从这个数据框中绘制一列时,我的绘图上的标签会显示日期和时间,即使这些位没有意义。如何解决此问题,使月份仅以YYYY-MM格式显示 在绘图之前,通过将日期时间索引转换为PeriodIndex并提供每月频率,对日期时间索引进行一个小的修改,如下所示- a.index = a.index.to_period('M') # Even a.index.astype('period[M]') works 演示: 考虑一个DF

我有一个带有DatetimeIndex的熊猫数据帧,每月(
M
)一次。然而,当我从这个数据框中绘制一列时,我的绘图上的标签会显示日期和时间,即使这些位没有意义。如何解决此问题,使月份仅以
YYYY-MM
格式显示


在绘图之前,通过将
日期时间索引转换为
PeriodIndex
并提供每月频率,对
日期时间索引进行一个小的修改,如下所示-

a.index = a.index.to_period('M')  # Even a.index.astype('period[M]') works

演示:

考虑一个
DF
,如图所示:

idx = pd.date_range('2016/1/1', periods=10, freq='M')
df = pd.DataFrame(dict(count=np.random.randint(10,1000,10)), idx).rename_axis('start_date')
df

旧的
DateTimeIndex

>>> df.index
DatetimeIndex(['2016-01-31', '2016-02-29', '2016-03-31', '2016-04-30',
               '2016-05-31', '2016-06-30', '2016-07-31', '2016-08-31',
               '2016-09-30', '2016-10-31'],
              dtype='datetime64[ns]', name='start_date', freq='M')
>>> df.index = df.index.to_period('M')
>>> df.index
PeriodIndex(['2016-01', '2016-02', '2016-03', '2016-04', '2016-05', '2016-06',
             '2016-07', '2016-08', '2016-09', '2016-10'],
            dtype='period[M]', name='start_date', freq='M')
新的
周期索引

>>> df.index
DatetimeIndex(['2016-01-31', '2016-02-29', '2016-03-31', '2016-04-30',
               '2016-05-31', '2016-06-30', '2016-07-31', '2016-08-31',
               '2016-09-30', '2016-10-31'],
              dtype='datetime64[ns]', name='start_date', freq='M')
>>> df.index = df.index.to_period('M')
>>> df.index
PeriodIndex(['2016-01', '2016-02', '2016-03', '2016-04', '2016-05', '2016-06',
             '2016-07', '2016-08', '2016-09', '2016-10'],
            dtype='period[M]', name='start_date', freq='M')
绘制它们:

df['count'].plot(kind='bar')
plt.show()