Open In App

How to Change Pandas Dataframe Datetime to Time

Last Updated : 07 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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
 
# Generate a DatetimeIndex with hourly frequency starting from '2023-02-01'
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.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads