2017-02-27 47 views
1

我有一个数据帧(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 

列标题是周期指标通过整合月度数据创建(日期是列标题)用下面的代码:

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

我想提取列标题为字符串为:

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

我可以再次列表转换以上对期指数然后将其转换字符串,但没有一个更简单的解决方法呢?

回答

1

好的,我在阅读文档时找到了答案。功能datetime.strftime()可以用于这样的:

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

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