Извлеките часть часа из времени и верните ее как целое число с пандами - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно извлечь часть часа из столбца времени, который представляет время в формате: «00:00:00» (час: минуты: секунды), и вернуть его как integer с PANDAS.

Например: если мое значение time равно 00:12:06, мне нужно получить час как целое число, т.е. 0

(

Ответы [ 4 ]

0 голосов
/ 23 октября 2018

вот, пожалуйста.Это должно дать вам ту логику, которая вам нужна.Вы в основном нуждаетесь в пандах, чтобы построить фрейм данных, а затем используете apply для извлечения значения часа.

import pandas as pd
data = [
        {'Id':'01', 'Name': "Donald", 'DOB': '14/06/1946 07:16:00', 'Hour' :None},
        {'Id':'02', 'Name': "Obama", 'DOB': '04/08/1961 15:04:00', 'Hour' :None},
        {'Id':'03', 'Name': "Clinton", 'DOB': '26/10/1947 00:12:06', 'Hour' :None}
       ]
df = pd.DataFrame(data)
df['DOB'] =  pd.to_datetime(df['DOB'], format='%d/%m/%Y %H:%M:%S')
df['Hour'] = df['DOB'].apply(lambda x: x.hour)
df[['Id', 'Name', 'DOB','Hour']]

enter image description here

0 голосов
/ 23 октября 2018

Если вы просто хотите получить целое число из этого столбца, быстрый способ - просто взять части строки, которые представляют часы, и преобразовать их в int.Предполагая, что ваш фрейм данных имеет столбец df['time']:

df['hour'] = df['time'].apply(lambda x: int(x[:2]))
0 голосов
/ 23 октября 2018

Не ясно, если столбец времени имеет строковый формат или формат даты / времени.

Если это строка, вы можете:

import pandas as pd
df['time'] = ["00:05:12"]
df['hour'] = df['time'].apply(lambda s: int(s.split(':')[0]))

Если это объект даты и времени:

from datetime import time
df['time2'] = [time(hour=00, minute=50, second=3)]
df['hour2'] = df['time2'].apply(lambda x: x.hour)
0 голосов
/ 23 октября 2018

Вы можете использовать dt.hour после преобразования time в datetime формат

# Convert to datetime and extract hour:
df['hour'] = pd.to_datetime(df['time']).dt.hour

Пример:

>>> df
       time
0  00:12:06
1  01:12:06

df['hour'] = pd.to_datetime(df['time']).dt.hour

>>> df
       time  hour
0  00:12:06     0
1  01:12:06     1
...