Transformation mensuelle de données en trimestriel pandas

J'ai des données mensuelles. Je veux le convertir en "periods" de 3 mois, où q1 Commence en janvier. Ainsi, dans l'exemple ci-dessous, la première agrégation de 3 mois sera transférée au début. q2 /Format souhaité: 1996q2/. Et la valeur des données obtenues à la suite du mélange de 3 mois de valeurs est moyenne /Milieu/ de 3 Colonnes. Conceptuellement ce n'est pas difficile. Est-ce que quelqu'un sait comment le faire dans un est-il tombé? Potentiellement, je pourrais faire beaucoup de travail acharné à l'aide d'un cycle et juste de l'encoder rigidement, mais je suis nouveau à pandas Et je cherche quelque chose de plus clair que le pouvoir accidenté.

1996-04 1996-05 1996-06 1996-07 .....
25 19 37 40
Donc je cherche:

1996q2 1996q3 1996q4 1997q1 1997q2 .....
avg avg avg ... ...
Invité:

Felix

Confirmation de:

vous pouvez utiliser
http://pandas.pydata.org/panda ... range
en combinaison avec
http://pandas.pydata.org/panda ... .html
/ :


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


UPDATE

: obtenir des colonnes dans le résultat DF sous forme de cordes au début
period

dtype:


In [66]: res = /df.groupby/pd.PeriodIndex/df.columns, freq='Q'/, axis=1/
.mean//
.rename/columns=lambda c: str/c/.lower////

In [67]: res
Out[67]:
1996q2 2000q3 2010q4
0 1.5 3.5 1.000000
1 22.0 38.5 2.000000
2 15.0 35.0 4.333333

In [68]: res.columns.dtype
Out[68]: dtype/'O'/

Pour répondre aux questions, connectez-vous ou registre