Separate Date and Time from Datetime Column in Python Pandas



Assume, you have datetime column in dataframe and the result for separating date and time as,

   datetime    date          time
0 2020-01-01 07:00:00 2020-01-06 07:00:00
1 2020-01-02 07:00:00 2020-01-06 07:00:00
2 2020-01-03 07:00:00 2020-01-06 07:00:00
3 2020-01-04 07:00:00 2020-01-06 07:00:00
4 2020-01-05 07:00:00 2020-01-06 07:00:00
5 2020-01-06 07:00:00 2020-01-06 07:00:00

To solve this, we will follow the below approaches −

Solution 1

  • Define a dataframe ‘datetime’ column using pd.date_range(). It is defined below,

pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
  • Set for loop d variable to access df[‘datetime’] column one by one.

  • Convert date and time from for loop and save it as df[‘date’] and df[‘time’]. It is defined below,

for d in df['datetime']:
   df['date'] = d.date()
   df['time'] = d.time()

Example

Let’s check the following code to get a better understanding −

import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
print("DataFrame is:\n", df)
for d in df['datetime']:
   df['date'] = d.date()
   df['time'] = d.time()
print(df)

Output

DataFrame is:
             datetime
0 2020-01-01 07:10:00
1 2020-01-02 07:10:00
2 2020-01-03 07:10:00
3 2020-01-04 07:10:00
4 2020-01-05 07:10:00
5 2020-01-06 07:10:00
Date-time-hour-minutes :
             datetime    date      time
0 2020-01-01 07:10:00 2020-01-06 07:10:00
1 2020-01-02 07:10:00 2020-01-06 07:10:00
2 2020-01-03 07:10:00 2020-01-06 07:10:00
3 2020-01-04 07:10:00 2020-01-06 07:10:00
4 2020-01-05 07:10:00 2020-01-06 07:10:00
5 2020-01-06 07:10:00 2020-01-06 07:10:00

Solution 2

  • Define a dataframe

  • Apply pd.to_datetime() function inside df[‘datetime’] and select date using dt.date then save it as df[‘date’]

  • Apply pd.to_datetime() function inside df[‘datetime’] and select time using dt.time then save it as df[‘time’]

Example

Let’s check the following code to get a better understanding −

import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:10',periods=6)})
print("DataFrame is:\n", df)
df['date'] = pd.to_datetime(df['datetime']).dt.date
df['time'] = pd.to_datetime(df['datetime']).dt.time
print("Date-time-hour-minutes :\n", df)

Output

DataFrame is:
             datetime
0 2020-01-01 07:10:00
1 2020-01-02 07:10:00
2 2020-01-03 07:10:00
3 2020-01-04 07:10:00
4 2020-01-05 07:10:00
5 2020-01-06 07:10:00
Date-time-hour-minutes :
             datetime    date      time
0 2020-01-01 07:10:00 2020-01-06 07:10:00
1 2020-01-02 07:10:00 2020-01-06 07:10:00
2 2020-01-03 07:10:00 2020-01-06 07:10:00
3 2020-01-04 07:10:00 2020-01-06 07:10:00
4 2020-01-05 07:10:00 2020-01-06 07:10:00
5 2020-01-06 07:10:00 2020-01-06 07:10:00
Updated on: 2021-02-25T07:05:47+05:30

10K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements