2 votes

Comment convertir une chaîne de période en un type de période réel

J'ai une colonne de données telle que '1971q1' , '1972q2' etc. (année suivie d'un trimestre) Quand je le fais :

print(type(df.Quarterly))

la réponse est Series

Ce dont j'ai besoin, c'est de convertir cette colonne en un véritable type pd.Period afin de pouvoir faire de l'algèbre temporelle simple avec elle. Merci pour votre aide.

5voto

MaxU Points 5284

Vous pouvez utiliser pd.PeriodIndex() método.

Supposons que vous ayez le DF suivant :

In [517]: x
Out[517]:
  str_col
0  1971q1
1  1971q2
2  1971q3
3  1971q4
4  1972q1
5  1972q2
6  1972q3
7  1972q4

In [518]: x.dtypes
Out[518]:
str_col    object
dtype: object

créons une nouvelle colonne "période" :

In [519]: x['period'] = pd.PeriodIndex(x.str_col, freq='Q')

In [520]: x
Out[520]:
  str_col period
0  1971q1 1971Q1
1  1971q2 1971Q2
2  1971q3 1971Q3
3  1971q4 1971Q4
4  1972q1 1972Q1
5  1972q2 1972Q2
6  1972q3 1972Q3
7  1972q4 1972Q4

In [521]: x.dtypes
Out[521]:
str_col    object
period     object
dtype: object

Nous pouvons maintenant faire de l'"algèbre du temps", par exemple en soustrayant un trimestre de chaque période :

In [525]: x.period - 1
Out[525]:
0   1970Q4
1   1971Q1
2   1971Q2
3   1971Q3
4   1971Q4
5   1972Q1
6   1972Q2
7   1972Q3
Name: period, dtype: object

Alternativement, vous pouvez lancer l'option str_col à la colonne régulière de Pandas/NumPy. datetime :

In [527]: pd.to_datetime(x.str_col, errors='coerce')
Out[527]:
0   1971-01-01
1   1971-04-01
2   1971-07-01
3   1971-10-01
4   1972-01-01
5   1972-04-01
6   1972-07-01
7   1972-10-01
Name: str_col, dtype: datetime64[ns]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X