从时间中提取小时部分,并以pandas作为整数返回

时间:2018-10-23 14:59:52

标签: python pandas time extract datetime-conversion

我需要从表示时间的时间列中提取小时部分,其格式为:“ 00:00:00”(小时:分钟:秒),并以integer的形式返回,{ 1}}。

例如: 如果我的PANDAS值为time,我需要将小时数作为一个整数,即00:12:06

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您只想从该列中获取一个整数,则一种快速的方法是仅获取代表小时数的字符串部分并将其转换为int。假设您的数据框具有列df['time']

df['hour'] = df['time'].apply(lambda x: int(x[:2]))

答案 2 :(得分:0)

不清楚时间列是字符串格式还是日期时间格式。

如果是字符串,则可以:

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)

答案 3 :(得分:0)

你去哪里。这应该为您提供所需的逻辑。您基本上需要选择熊猫来构建数据框,然后使用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