从时间中提取小时部分,并将其 return 作为具有 pandas 的整数

Extract the hour part from the time and return it as an integer with pandas

我需要从表示时间的时间列中提取小时部分,格式为:“00:00:00”(小时:分钟:秒),return 将其作为 integerPANDAS.

例如: 如果我的 time 值为 00:12:06 我需要将小时作为整数获取,即 0

(

time格式转换为datetime格式后即可使用dt.hour

# 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

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

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

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

如果是字符串,可以:

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)

给你。这应该给你你需要的逻辑。您基本上需要 pandas 来构建数据框,然后使用 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']]