Hamza
Hamza

Reputation: 560

How to get the time only from timestamps?

I have a column of (created AT) in my DataFrame which has a timestamps like shown below:

      Created AT
1) 2021-04-19T09:14:10.526Z
2) 2021-04-19T09:13:06.809Z
3) 2021-04-19T09:13:06.821Z

I want to extract the time only from above column etc . It should show like: 9:14:8 etc How to extract this ?

Upvotes: 0

Views: 2808

Answers (5)

Sanjay Sheel
Sanjay Sheel

Reputation: 97

I have a solution to your question. It can have multiple solutions but here I am giving some solution here using time, DateTime


you can get the string using

import time
import datetime
s = '2021-04-19T09:14:10.526Z'
t = s.split('T')[1].split('.')[0]
print(t)

and for getting time stamp of it do one more line

print(datetime.datetime.strptime(t,"%H:%M:%S"))

Upvotes: 1

SeaBean
SeaBean

Reputation: 23227

First convert the column to datetime format if not already in that format:

df['Created AT'] = pd.to_datetime(df['Created AT'])

Then, add the new column time with formatting by .dt.strftime() as follows (if you don't want the nano-second part):

df['time'] = df['Created AT'].dt.strftime('%H:%M:%S')
    
print(df)
    
                        Created AT      time
0 2021-04-19 09:14:10.526000+00:00  09:14:10
1 2021-04-19 09:13:06.809000+00:00  09:13:06
2 2021-04-19 09:13:06.821000+00:00  09:13:06

Upvotes: 0

Christopher Palm
Christopher Palm

Reputation: 71

Convert to datetime and use strftime to format exactly as you like it.

data = ['2021-04-19T09:14:10.526Z',
        '2021-04-19T09:13:06.809Z',
        '2021-04-19T09:13:06.821Z']
df = pd.DataFrame(data=data, columns=['Created AT'])
df['Created AT'] = pd.to_datetime(df['Created AT']).dt.strftime('%H:%M:%S')
print(df)

  Created AT
0   09:14:10
1   09:13:06
2   09:13:06

Upvotes: 0

Aditya
Aditya

Reputation: 1377

If your date column is a string, you need to convert it to datetime and then take a substring of the time:

df = pd.DataFrame(data = {"Created At":["2021-04-19T09:14:10.526Z","2021-04-19T09:14:10.526Z"]})
df['Created At'] = pd.to_datetime(df['Created At'])
df['Created At'] = df['Created At'].dt.time.astype(str).str[:8]

Upvotes: 1

Khava
Khava

Reputation: 76

df['time'] = pd.to_datetime(df['Created AT'])
print(df['time'].dt.time)

On the first line, convert the datetime to objects and write in a new column.

On the second, we get the time from datetime objects

Upvotes: 1

Related Questions