How to extract hour, minute and second from Series filled with datetime.time values

2024/10/5 13:18:51

Data:

0    09:30:38
1    13:40:27
2    18:05:24
3    04:58:08
4    09:00:09

Essentially what I'd like to do is split this into three columns [hour, minute, second]

I've tried the following code but none seem to be working:

train_sample.time.hour
AttributeError: 'Series' object has no attribute 'hour'train_sample.time.dt.hour
AttributeError: Can only use .dt accessor with datetimelike values pd.DatetimeIndex(train_sample.time).hour
TypeError: <class 'datetime.time'> is not convertible to datetime

This seems so simple but I can't figure it out. Any help would be much appreciated.

Answer

Use list comprehension with extract attributes of times:

import datetime as datetimedf = pd.DataFrame({'time': [datetime.time(9, 30, 38), datetime.time(13, 40, 27), datetime.time(18, 5, 24),datetime.time(4, 58, 8), datetime.time(9, 0, 9)]})print (df)time
0  09:30:38
1  13:40:27
2  18:05:24
3  04:58:08
4  09:00:09df[['h','m','s']] = pd.DataFrame([(x.hour, x.minute, x.second) for x in df['time']])

Or convert to strings, split and convert to int:

df[['h','m','s']] = df['time'].astype(str).str.split(':', expand=True).astype(int)print (df)time   h   m   s
0  09:30:38   9  30  38
1  13:40:27  13  40  27
2  18:05:24  18   5  24
3  04:58:08   4  58   8
4  09:00:09   9   0   9
https://en.xdnf.cn/q/70477.html

Related Q&A

Getting an error attachment_filename does not exist in my docker environment

Due to some reasons this particular code is not working in docker but it works fine in development environment. I am getting error "TypeError: send_file() got an unexpected keyword argument attach…

How to check if a process with Command line argument is running using python

I would like to check if a script is running with a specific command line argument within a python script.For example I would like to check if:main.py testargIs running. Is there any way I can achieve …

cx_oracle and python 2.7 [duplicate]

This question already has answers here:Python module "cx_Oracle" module could not be found(4 answers)Closed 5 years ago.Im using python 2.7 and cx_oracle ( Windows x86 Installer (Oracle 10g, …

Inheritance in Python C++ extension

I have c++ library that need communicate with Python plugged in modules. Communication supposes implementing by Python some callback c++ interface. I have read already about writing extensions, but no …

exposing C++ class in Python ( only ET_DYN and ET_EXEC can be loaded)

I was looking at here to see how to expose c++ to Python. I have built Python deep learning code which uses boost-python to connect c++ and python and it is running ok, so my system has things for boos…

Migrations in mongoengine: InvalidId

I am working with mongoengine and trying to do a simple migration. I have a field which I would like to migrate from being a StringField to a ReferenceField to another Object. I planned on doing the …

Keras pretrain CNN with TimeDistributed

Here is my problem, I want to use one of the pretrain CNN network in a TimeDistributed layer. But I have some problem to implement it.Here is my model:def bnn_model(max_len):# sequence length and resne…

How to `pause`, and `resume` download work?

Usually, downloading a file from the server is something like this: fp = open(file, wb) req = urllib2.urlopen(url) for line in req:fp.write(line) fp.close()During downloading, the download process just…

AttributeError: module rest_framework.serializers has no attribute NullBooleanField

After upgrading djangorestframework from djangorestframework==3.13.1 to djangorestframework==3.14.0 the code from rest_framework.serializers import NullBooleanFieldThrowsAttributeError: module rest_fra…

Pandas convert dataframe values to column names

I want to use dataframe values as column names and simplify the dataframe.I tried df.stack() and then index.map({0[0]}_{0[1]}.format)Input_df(Got this df by doing a groupby):link price dateA 1 …