2016-11-08 26 views
10

私は毎月のデータを持っています。私はq1が1月に始まる3ヶ月の "期間"に変換したいと思う。下の例では、最初の3か月の集計はq2の開始に変換されます(希望の形式:1996q2)。また、3つの月間値を一緒に洗い流すことによって生じるデータ値は、平均(平均)3列です。概念的に、複雑ではない。誰もが一気にそれをやる方法を知っていますか?潜在的に、私はループで多くの困難な作業を行うことができますし、ちょうどそれをハードコードしますが、私はパンダには新しく、ブルートフォースよりも賢い何かを探しています。パンダで毎月のデータを四半期に変換する方法

ありがとうございました。

 
1996-04 1996-05 1996-06 1996-07 ..... 
25   19  37  40 

だから私は探しています:

 
1996q2 1996q3 1996q4 1997q1 1997q2 ..... 
avg  avg  avg  ...  ... 

答えて

17

あなたはgroupby(..., axis=1)と一緒にpd.PeriodIndex(..., freq='Q')を使用することができます。

In [63]: df 
Out[63]: 
    1996-04 1996-05 2000-07 2000-08 2010-10 2010-11 2010-12 
0  1  2  3  4  1  1  1 
1  25  19  37  40  1  2  3 
2  10  20  30  40  4  4  5 

In [64]: df.groupby(pd.PeriodIndex(df.columns, freq='Q'), axis=1).mean() 
Out[64]: 
    1996Q2 2000Q3 2010Q4 
0  1.5  3.5 1.000000 
1 22.0 38.5 2.000000 
2 15.0 35.0 4.333333 
+1

私は 'pd.PeriodIndex'を無視してきました。私はもはやしないでしょう。 – piRSquared

+0

@piRSquared、はい、かなり便利です – MaxU

関連する問題