Python Pandas - Return DatetimeIndex as object ndarray of datetime.datetime objects

In Pandas, a DatetimeIndex stores datetime values as NumPy datetime64 objects. Sometimes you need to convert these to native Python datetime.datetime objects. Use the to_pydatetime() method to return a DatetimeIndex as an object ndarray of datetime.datetime objects.

Syntax

DatetimeIndex.to_pydatetime()

This method returns an object ndarray where each element is a Python datetime.datetime object.

Creating a DatetimeIndex

First, let's create a DatetimeIndex with a specific frequency ?

import pandas as pd

# Create DatetimeIndex with period 5 and frequency as 2 years
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')

print("DateTimeIndex...")
print(datetimeindex)
DateTimeIndex...
DatetimeIndex(['2021-12-31 07:20:32.261811624',
               '2023-12-31 07:20:32.261811624',
               '2025-12-31 07:20:32.261811624',
               '2027-12-31 07:20:32.261811624',
               '2029-12-31 07:20:32.261811624'],
              dtype='datetime64[ns]', freq='2A-DEC')

Converting to Python datetime Objects

Use to_pydatetime() to convert the DatetimeIndex to an array of Python datetime objects ?

import pandas as pd

# Create DatetimeIndex
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')

# Convert to Python datetime objects
datetime_objects = datetimeindex.to_pydatetime()

print("DatetimeIndex as Python datetime objects...")
print(datetime_objects)
print(f"\nType of result: {type(datetime_objects)}")
print(f"Type of first element: {type(datetime_objects[0])}")
DatetimeIndex as Python datetime objects...
[datetime.datetime(2021, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2023, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2025, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2027, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2029, 12, 31, 7, 20, 32, 261811)]

Type of result: <class 'numpy.ndarray'>
Type of first element: <class 'datetime.datetime'>

Complete Example

Here's a comprehensive example showing the difference between DatetimeIndex and converted datetime objects ?

import pandas as pd

# Create DatetimeIndex with period 5 and frequency as 2 years
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')

# Display DateTimeIndex
print("DateTimeIndex...")
print(datetimeindex)

# Display DateTimeIndex frequency
print("\nDateTimeIndex frequency...")
print(datetimeindex.freq)

# Convert to Python datetime objects
print("\nReturn DatetimeIndex as object ndarray of datetime.datetime objects...")
datetime_objects = datetimeindex.to_pydatetime()
print(datetime_objects)

# Access individual datetime methods
print(f"\nFirst datetime object year: {datetime_objects[0].year}")
print(f"First datetime object month: {datetime_objects[0].month}")
DateTimeIndex...
DatetimeIndex(['2021-12-31 07:20:32.261811624',
               '2023-12-31 07:20:32.261811624',
               '2025-12-31 07:20:32.261811624',
               '2027-12-31 07:20:32.261811624',
               '2029-12-31 07:20:32.261811624'],
              dtype='datetime64[ns]', freq='2A-DEC')

DateTimeIndex frequency...
<2 * YearEnds: month=12>

Return DatetimeIndex as object ndarray of datetime.datetime objects...
[datetime.datetime(2021, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2023, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2025, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2027, 12, 31, 7, 20, 32, 261811)
 datetime.datetime(2029, 12, 31, 7, 20, 32, 261811)]

First datetime object year: 2021
First datetime object month: 12

Key Points

  • The to_pydatetime() method converts Pandas datetime64 objects to Python datetime objects
  • Returns a NumPy object array containing datetime.datetime instances
  • Useful when you need to use Python datetime methods or interface with libraries expecting Python datetime objects
  • Note that microseconds are truncated in the conversion (nanoseconds become microseconds)

Conclusion

Use to_pydatetime() to convert Pandas DatetimeIndex to native Python datetime objects. This is helpful when interfacing with Python libraries that expect datetime.datetime objects rather than Pandas datetime64 types.

Updated on: 2026-03-26T17:34:05+05:30

527 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements