web-dev-qa-db-fra.com

Formatage du quart de temps en colonnes pandas

J'ai un DataFrame avec des colonnes dans l'index DateTime, représentant des trimestres tels que:

2000-03-31 00:00:00

Comment puis-je faire pour transformer cela en "2000q1"?

J'ai regardé les documents, mais ils ne disent que DateTimeIndex.quarter ici: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.quarter.html

format='%Y%q' ne marche pas. L'option on='%Y%q

11
B Furtado

Vous pouvez utiliser to_period("Q"):

df.index = df.index.to_period("Q")

import pandas as pd
df = pd.DataFrame({"y": [1,2,3]}, 
                  index=pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00"]))

df.index = df.index.to_period("Q")
df
#       y
#2000Q1 1
#2000Q2 2
#2000Q3 3

Pour convertir une colonne normale col, utilisez dt pour accéder aux objets Datetime de la série:

df = pd.DataFrame({"y": [1,2,3], 'col': pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00"])})


df['col'] = df['col'].dt.to_period("Q")

df
#      col  y
#0  2000Q1  1
#1  2000Q2  2
#2  2000Q3  3
17
Psidom