How to Change Pandas Dataframe Datetime to Time
Last Updated :
07 Feb, 2024
The DatetimeIndex contains datetime64[ns] data type, which represents timestamps with nanosecond precision. In many cases, we may just want to extract the time component from a Pandas Datetime column or index.
Let’s discuss easy ways to convert the Datetime to Time data while preserving all the time information using pandas
Converting Datetime to Time in Pandas
Creating Sample Datetime Data
Let’s start by creating a Pandas DataFrame with a Datetime index and column: This DataFrame contains 5 rows with hourly datetime data.
Python
import pandas as pd
import numpy as np
dates = pd.date_range( '2023-02-01' , periods = 5 , freq = 'H' )
df = pd.DataFrame()
df[ 'Datetime' ] = dates
print (df)
|
Output:
Datetime
0 2023-02-01 00:00:00
1 2023-02-01 01:00:00
2 2023-02-01 02:00:00
3 2023-02-01 03:00:00
4 2023-02-01 04:00:00
Let’s Extract Time from Datetime using following ways:
1. Using dt.time
Pandas provides the dt.time attribute to extract time from a DatetimeIndex or Series. This extracts the time component into a new column without losing any information.
Python
df[ 'Time' ] = df[ 'Datetime' ].dt.time
print (df)
|
Output:
Datetime Time
0 2023-02-01 00:00:00 00:00:00
1 2023-02-01 01:00:00 01:00:00
2 2023-02-01 02:00:00 02:00:00
3 2023-02-01 03:00:00 03:00:00
4 2023-02-01 04:00:00 04:00:00
2. Using DatetimeIndex
We can also extract time from the DatetimeIndex.
Python
df.index = dates
df.index = df.index.time
print (df)
|
Output:
Datetime Time
00:00:00 2023-02-01 00:00:00 00:00:00
01:00:00 2023-02-01 01:00:00 01:00:00
02:00:00 2023-02-01 02:00:00 02:00:00
03:00:00 2023-02-01 03:00:00 03:00:00
04:00:00 2023-02-01 04:00:00 04:00:00
3. Timezone Handling
An important consideration with datetime data is timezones. Pandas stores the timezone information and handles conversion properly when extracting the time component.
Let’s set a timezone to the datetime data
Python
df.index = dates
df.index = df.index.tz_localize( 'US/Pacific' )
print (df.index)
|
Output:
DatetimeIndex(['2023-02-01 00:00:00-08:00', '2023-02-01 01:00:00-08:00',
'2023-02-01 02:00:00-08:00', '2023-02-01 03:00:00-08:00',
'2023-02-01 04:00:00-08:00'],
dtype='datetime64[ns, US/Pacific]', freq=None)
Conclusion
The ability to switch between Datetime and Time makes it very convenient to work with temporal data in Pandas.
Share your thoughts in the comments
Please Login to comment...