2017-02-27 9 views
1

私はデータフレーム(df_qtr)を持っているとして抽出期間インデックス情報:列ヘッダーが期間インデックスですパンダ日付機能:次の形式のString

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