2016-11-16 24 views
4

私は1つの列は次の形式の年と四半期の文字列が含まれているパンダのデータフレーム、持っている:変換文字列

2015Q1 

を私の質問: 方法私はこれを2つのdatetime列に変換します.1つは年の列、もう1つは四半期です。

+1

何が価値があるのは、パンダは、Aは期間タイプ。 'pd.Period( '2015Q1')'あなたに '.year'と' .quarter'を呼び出すオブジェクトを与えます。そして期間に関連する計算を行う – Boud

答えて

7

あなたは、splitを使用し、その後intに列yearをキャストし、必要に応じて列qQを追加することができます。

df = pd.DataFrame({'date':['2015Q1','2015Q2']}) 
print (df) 
    date 
0 2015Q1 
1 2015Q2 

df[['year','q']] = df.date.str.split('Q', expand=True) 
df.year = df.year.astype(int) 
df.q = 'Q' + df.q 
print (df) 
    date year q 
0 2015Q1 2015 Q1 
1 2015Q2 2015 Q2 

また、あなたがPeriodを使用することができます。

df['date'] = pd.to_datetime(df.date).dt.to_period('Q') 

df['year'] = df['date'].dt.year 
df['quarter'] = df['date'].dt.quarter 

print (df) 
    date year quarter 
0 2015Q1 2015  1 
1 2015Q2 2015  2 
+0

パーフェクトソリューション - 多くのありがとう! –

+1

実際にdatetimeが必要ないのですか? –

0

あなたはまたdatetimeIndexを構築することができその上に年と四半期を呼び出します。

df.index = pd.to_datetime(df.date) 
df['year'] = df.index.year 
df['quarter'] = df.index.quarter 

       date year quarter 
date        
2015-01-01 2015Q1 2015  1 
2015-04-01 2015Q2 2015  2 

あなたも、あなたがdatetimeIndexを持っている場合、あなたは例えば、このようなGROUPBYを行うことができ一年と四半期の専用の列を必要としません。注:df.groupby(df.index.quarter)