2013-05-26 4 views
8

マクロ経済データのCSVをインポートしていますが、このタイプの日付をPandasに解釈させる方法を見つけることができませんでした。それを自動的に行う方法はありますか、それとも自分自身で解析する必要がありますか?パンダは、四半期ごとにyyyyQpという形式の日付(例:2013Q2)をサポートしていますか?

私がしようとするパーサを頼むとき、私が取得:

File "datetime.pxd", line 133, in datetime._string_to_dts (pandas/tslib.c:31399)ValueError: Unable to parse 2002Q1 
+0

ピリオドクラスはこの形式を受け入れ、理解しますが、CSVからデータフレームにインポートするときは認識されないようです。 – kdamica

答えて

7

pd.Periodは四半期の期間を解析できるため、カスタムdate_parserとして使用できます。その後、四半期の最終日に日付を変換するために、あなたはmapを使用することができますし、end_time属性:

import pandas as pd 

text = '''\ 
date val 
2013Q2 100 
2013Q3 120 
''' 

filename = '/tmp/data' 
with open(filename, 'w') as f: 
    f.write(text) 
df = pd.read_table(filename, sep='\s+', date_parser=pd.Period, parse_dates=[0]) 
df['date'] = df['date'].map(lambda x: x.end_time.date()) 

print(df) 
#   date val 
# 0 2013-06-30 100 
# 1 2013-09-30 120 
0

これは、すべての様々なビジネス日付/時間及び周波数のための非常に良いサポートしています。しかし、あなたはおそらくその特定の形式を自分自身で解析する必要があります。

0

はここで異なる列に年と四半期を持っている人を助けるために何か:

year quarter foo 
1994 q1  10 
1994 q3  20 
1995 q1  30 
1995 q3  40 

read_csvへのparse_datesの引数が機能します。

>>> pd.read_csv('bar.csv', parse_dates={'period':['year', 'quarter']}) 
period  foo 
1994 q1  10 
1994 q3  20 
1995 q1  30 
1995 q3  40 
関連する問題