How to Extract Month and Year Separately From Datetime Column in Pandas
-
pandas.Series.dt.year()andpandas.Series.dt.month()Methods to Extract Month and Year -
strftime()Method to Extract Year and Month -
pandas.DatetimeIndex.monthandpandas.DatetimeIndex.yearto Extract Year and Month
We could extract year and month from Datetime column using pandas.Series.dt.year() and pandas.Series.dt.month() methods respectively. If the data isn’t in Datetime type, we need to convert it firstly to Datetime. We can also extract year and month using pandas.DatetimeIndex.month along with pandas.DatetimeIndex.year and strftime() method.
pandas.Series.dt.year() and pandas.Series.dt.month() Methods to Extract Month and Year
pandas.Series.dt.year() and pandas.Series.dt.month() methods applied on Datetime type returns NumPy array of year and month respectively of the Datetime entry in the series object.
import pandas as pd
import numpy as np
import datetime
list_of_dates = ["2019-11-20", "2020-01-02", "2020-02-05", "2020-03-10", "2020-04-16"]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"]
df = pd.DataFrame({"Joined date": pd.to_datetime(list_of_dates)}, index=employees)
df["Year"] = df["Joined date"].dt.year
df["Month"] = df["Joined date"].dt.month
print(df)
Output:
Joined date Year Month
Hisila 2019-11-20 2019 11
Shristi 2020-01-02 2020 1
Zeppy 2020-02-05 2020 2
Alina 2020-03-10 2020 3
Jerry 2020-04-16 2020 4
However, if the column is not Datetime type, we should first convert the column to Datetime type using the to_datetime() method.
import pandas as pd
import numpy as np
import datetime
list_of_dates = ["11/20/2019", "01/02/2020", "02/05/2020", "03/10/2020", "04/16/2020"]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"]
df = pd.DataFrame({"Joined date": pd.to_datetime(list_of_dates)}, index=employees)
df["Joined date"] = pd.to_datetime(df["Joined date"])
df["Year"] = df["Joined date"].dt.year
df["Month"] = df["Joined date"].dt.month
print(df)
Output:
Joined date Year Month
Hisila 2019-11-20 2019 11
Shristi 2020-01-02 2020 1
Zeppy 2020-02-05 2020 2
Alina 2020-03-10 2020 3
Jerry 2020-04-16 2020 4
strftime() Method to Extract Year and Month
The strftime() method takes Datetime takes format codes as input and returns a string representing the specific format specified in output. We use %Y and %m as format codes to extract year and month.
import pandas as pd
import numpy as np
import datetime
list_of_dates = ["2019-11-20", "2020-01-02", "2020-02-05", "2020-03-10", "2020-04-16"]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"]
df = pd.DataFrame({"Joined date": pd.to_datetime(list_of_dates)}, index=employees)
df["year"] = df["Joined date"].dt.strftime("%Y")
df["month"] = df["Joined date"].dt.strftime("%m")
print(df)
Output:
Joined date year month
Hisila 2019-11-20 2019 11
Shristi 2020-01-02 2020 01
Zeppy 2020-02-05 2020 02
Alina 2020-03-10 2020 03
Jerry 2020-04-16 2020 04
pandas.DatetimeIndex.month and pandas.DatetimeIndex.year to Extract Year and Month
Another simple approach to extract the month and year from the Datetime column is by retrieving values of year and month attributes of objects of pandas.DatetimeIndex class.
import pandas as pd
import numpy as np
import datetime
list_of_dates = ["2019-11-20", "2020-01-02", "2020-02-05", "2020-03-10", "2020-04-16"]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"]
df = pd.DataFrame({"Joined date": pd.to_datetime(list_of_dates)}, index=employees)
df["year"] = pd.DatetimeIndex(df["Joined date"]).year
df["month"] = pd.DatetimeIndex(df["Joined date"]).month
print(df)
Output:
Joined date Year Month
Hisila 2019-11-20 2019 11
Shristi 2020-01-02 2020 1
Zeppy 2020-02-05 2020 2
Alina 2020-03-10 2020 3
Jerry 2020-04-16 2020 4
pandas.DatetimeIndex class is an immutable ndarray of datetime64 data. It has attributes like year, month, day, etc.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn