Python 将datetimeindex格式化为季度

Python 将datetimeindex格式化为季度,python,pandas,datetime,dataframe,datetime-format,Python,Pandas,Datetime,Dataframe,Datetime Format,通过重新采样工作,我将每月值转换为季度值: hs=hs.resample('QS',axis=1).mean() 效果很好,我的专栏如下: hs.columns: DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01', '2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01', '2002-01-01', '200

通过重新采样工作,我将每月值转换为季度值:

hs=hs.resample('QS',axis=1).mean()
效果很好,我的专栏如下:

hs.columns:
DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
           '2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
           '2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01',
现在,我希望它们转换为YYYYq[1-4]格式,我认为这应该很容易(根据以下内容):

但这给了:

array(['2000qq', '2000qq', '2000qq', '2000qq', '2001qq', '2001qq',
   '2001qq', '2001qq', '2002qq', '2002qq', '2002qq', '2002qq',
   '2003qq', '2003qq', '2003qq', '2003qq', '2004qq', '2004qq',
哪里出错?如何解决此问题?

一种使用方法:


文档指定的是
strftime
期间数据类型而不是日期时间数据类型;要使用
%q
格式化程序,可以将日期时间索引转换为时段(以天为单位),然后对其进行格式化:

cols = pd.DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
                         '2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
                         '2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01'])

cols.to_period('D').strftime('%Yq%q')
# hs.columns.to_period('D').strftime('%Yq%q')
#array([u'2000q1', u'2000q2', u'2000q3', u'2000q4', u'2001q1', u'2001q2',
#       u'2001q3', u'2001q4', u'2002q1', u'2002q2', u'2002q3', u'2002q4'],
#      dtype='<U6')

以下解决方案之一是否有帮助?请随意接受,或要求澄清。
df = pd.DataFrame(columns=['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
                           '2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
                           '2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01'])

df.columns = pd.to_datetime(df.columns.to_series()).dt.to_period('Q')

print(df.columns)

# PeriodIndex(['2000Q1', '2000Q2', '2000Q3', '2000Q4', '2001Q1', '2001Q2',
#              '2001Q3', '2001Q4', '2002Q1', '2002Q2', '2002Q3', '2002Q4'],
#             dtype='period[Q-DEC]', freq='Q-DEC')
cols = pd.DatetimeIndex(['2000-01-01', '2000-04-01', '2000-07-01', '2000-10-01',
                         '2001-01-01', '2001-04-01', '2001-07-01', '2001-10-01',
                         '2002-01-01', '2002-04-01', '2002-07-01', '2002-10-01'])

cols.to_period('D').strftime('%Yq%q')
# hs.columns.to_period('D').strftime('%Yq%q')
#array([u'2000q1', u'2000q2', u'2000q3', u'2000q4', u'2001q1', u'2001q2',
#       u'2001q3', u'2001q4', u'2002q1', u'2002q2', u'2002q3', u'2002q4'],
#      dtype='<U6')
cols.to_period('Q')
# hs.columns.to_period('Q')
#PeriodIndex(['2000Q1', '2000Q2', '2000Q3', '2000Q4', '2001Q1', '2001Q2',
#             '2001Q3', '2001Q4', '2002Q1', '2002Q2', '2002Q3', '2002Q4'],
#            dtype='period[Q-DEC]', freq='Q-DEC')