Pandas 日期功能:将期间索引信息提取为字符串

Pandas Date Functionality: Extracting Period Index information as String

我有一个数据框(df_qtr),格式如下:

Index      2008Q4     2009Q1    2009Q2 
 Ex       85833.33   85433.33   85766.66
 Kc      153200.00  150533.33  149666.66
 Al       83766.66   84200.00   84333.33
 Jk      107933.33  113600.00  115366.66
 Ar      151200.00  147133.33  143900.00
 Ax      139300.00  137333.33  132700.00

列 headers 是 期间索引 通过使用以下代码合并每月数据(日期是列 headers)创建的:

In[1]: df_qtr = df.groupby(pd.PeriodIndex(df.columns, freq='q'), axis=1).mean()

我想将 列 headers 提取为字符串 为:

Out[1]: ['2008Q4', '2009Q1', '2009Q2']

我最接近的是将它转换回时间戳,然后是字符串:

 In[2]: list(df_qtr.columns.to_datetime().astype(str))
 Out[2]: Index(['2008-10-01', '2009-01-01', '2009-04-01']

但同样不适用于周期索引,我收到以下错误:

ValueError: Cannot cast PeriodIndex to dtype <U0

我可以再次将上面的列表转换为 Period Index,然后将其转换为字符串,但是没有更简单的解决方法吗?

好的,我在浏览文档时找到了答案。函数 datetime.strftime() 可用于此:

In[3]: df_qtr.columns.strftime('%YQ%q')
Out[3]: array(['2008Q4', '2009Q1', '2009Q2'], dtype='<U6')

原来它可以与日期时间、时间戳和周期索引一起使用。要了解更多信息,请阅读此处:strftime() and strptime() Behavior