Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
