How to Convert Datetime to Date in Pandas?

In data analysis and manipulation, dealing with dates and times is a common requirement. The Pandas library in Python provides powerful tools for working with datetime values. In this article, we will explore the process of converting datetime values to dateonly format in a Pandas DataFrame.

When working with datetime values, it is often necessary to extract specific components, such as the year, month, day, or time, for further analysis or visualization. However, in some cases, we may only be interested in the date portion of the datetime object, excluding the time information.

Converting datetime values to dateonly format can be useful in various scenarios. For instance, when aggregating data by date, removing the time component simplifies the analysis and allows us to focus solely on the date dimension. Additionally, when merging or joining datasets based on dates, converting datetime values to dates can help align the data more effectively.

Using the dt Accessor

Pandas provides a convenient dt accessor, which allows us to access various components of datetime values. To convert datetime values to date format using this approach, we can use the date property of the dt accessor.

Let's see how it works ?

import pandas as pd

# Create a sample DataFrame with datetime values
data = {'datetime': ['2022-01-01 10:30:00', '2022-02-15 14:45:00', '2022-03-20 18:00:00']}
df = pd.DataFrame(data)

# Convert 'datetime' column to datetime type
df['datetime'] = pd.to_datetime(df['datetime'])

# Extract date using the 'dt' accessor
df['date'] = df['datetime'].dt.date

# Display the DataFrame
print(df)

The output of the above code is ?

            datetime        date
0 2022-01-01 10:30:00  2022-01-01
1 2022-02-15 14:45:00  2022-02-15
2 2022-03-20 18:00:00  2022-03-20

How It Works

  • First, we import the required Pandas library.

  • We create a sample DataFrame with datetime values in the 'datetime' column.

  • To perform datetime operations, we convert the 'datetime' column to the datetime type using pd.to_datetime().

  • Using the dt accessor, we access the 'datetime' column and use the date property to extract only the date component.

  • We assign the extracted date values to a new column called 'date'.

Using the apply() Function

Another approach to converting datetime values to date format involves using the apply() function along with a custom function. This approach provides flexibility when we have specific formatting requirements ?

import pandas as pd

# Create a sample DataFrame with datetime values
data = {'datetime': ['2022-01-01 10:30:00', '2022-02-15 14:45:00', '2022-03-20 18:00:00']}
df = pd.DataFrame(data)

# Convert 'datetime' column to datetime type
df['datetime'] = pd.to_datetime(df['datetime'])

# Define a custom function to extract date
def extract_date(dt):
    return dt.date()

# Apply the custom function to the 'datetime' column
df['date'] = df['datetime'].apply(extract_date)

# Display the DataFrame
print(df)

The output of the above code is ?

            datetime        date
0 2022-01-01 10:30:00  2022-01-01
1 2022-02-15 14:45:00  2022-02-15
2 2022-03-20 18:00:00  2022-03-20

How It Works

  • We create a sample DataFrame with datetime values.

  • We convert the 'datetime' column to the datetime type using pd.to_datetime().

  • We define a custom function, extract_date(), which takes a datetime value as input and returns only the date component using the date() method.

  • Using the apply() function, we apply the extract_date() function to each element of the 'datetime' column.

Using strftime() for String Format

If you need the date as a string in a specific format, you can use strftime() with the dt accessor ?

import pandas as pd

# Create a sample DataFrame with datetime values
data = {'datetime': ['2022-01-01 10:30:00', '2022-02-15 14:45:00', '2022-03-20 18:00:00']}
df = pd.DataFrame(data)

# Convert 'datetime' column to datetime type
df['datetime'] = pd.to_datetime(df['datetime'])

# Convert to date string format
df['date_string'] = df['datetime'].dt.strftime('%Y-%m-%d')

print(df)

The output of the above code is ?

            datetime date_string
0 2022-01-01 10:30:00  2022-01-01
1 2022-02-15 14:45:00  2022-02-15
2 2022-03-20 18:00:00  2022-03-20

Comparison

Method Output Type Best For
dt.date datetime.date object When you need date objects for calculations
apply(lambda x: x.date()) datetime.date object Custom processing or complex transformations
dt.strftime('%Y-%m-%d') String When you need formatted date strings

Conclusion

Converting datetime to date in Pandas is straightforward using the dt accessor with the date property. Use apply() for custom transformations and strftime() when you need formatted date strings. The dt.date approach is the most efficient for simple date extraction tasks.

Updated on: 2026-03-27T11:08:27+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements