我需要从表示时间的时间列中提取小时部分,其格式为:“ 00:00:00”(小时:分钟:秒),并以integer
的形式返回,{ 1}}。
例如:
如果我的PANDAS
值为time
,我需要将小时数作为一个整数,即00:12:06
(
答案 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']]