How to Convert DateTime to Quarter in Pandas

Need to rename convert string or datetime to quarter in Pandas?

If so, you may use the following syntax to extract quarter info from your DataFrame:

df['Date'].dt.to_period('Q')

The picture below demonstrate it:

To begin, let's create a simple DataFrame with a datetime column:

import pandas as pd
dates = ['2021-01-01', '2021-05-02', '2021-08-03']
df = pd.DataFrame({'StartDate': dates})

df['StartDate'] = pd.to_datetime(df['StartDate'])

df
StartDate
2021-01-01
2021-05-02
2021-08-03

Step 1: Extract Quarter as YYYYMM from DataTime Column in Pandas

Let's say that you want to extract the quarter info in the next format: YYYYMM. Pandas offers a built-in method for this purpose .dt.to_period('Q'):

df['quarter'] = df['StartDate'].dt.to_period('Q')

the result would be:

0    2021Q1
1    2021Q2
2    2021Q3

Step 2: Extract Quarter(custom format) from DataTime Column in Pandas

What if you like to get a custom format instead of the default one? In this case you can use method: dt.strftime('q%q %y\'') to change the format like:

df['quarter_custom'] = df['StartDate'].dt.to_period('Q').dt.strftime('q%q %y\'')

This will output:

0    q1 21'
1    q2 21'
2    q3 21'

Another option for custom formatting might be separated extraction of the information as:

df['StartDate'].dt.year.astype(str) + '-' + df['StartDate'].dt.quarter.astype(str)

Step 3: Extract Quarters without the year

If you need to analyse the quarter info without the year information you can get it by:

df['StartDate'].dt.quarter

Resources