我定义了一个函数,它以时间为参数,并返回一天中的时间,如下所示:
def time_of_day(time):
#time = str(time) + ':00:00'
time = pd.to_timedelta(time)
if (time >= pd.to_timedelta('5:00:00')) & (time <= pd.to_timedelta('9:00:00')):
return 'Morning'
elif (time > pd.to_timedelta('9:00:00')) & (time <= pd.to_timedelta('16:00:00')):
return 'Day'
elif (time > pd.to_timedelta('16:00:00')) & (time <= pd.to_timedelta('22:00:00')):
return 'Evening'
else:
return 'Night'
我有一个包含时间列的数据帧,数据帧如下所示:
df:
Month Season time
1 Summer 00:05:00
1 Summer 00:35:00
1 Summer 01:05:00
1 Summer 01:35:00
1 Summer 02:05:00
数据帧的数据类型为:
Month int64
Season object
time object
当我将该函数应用于列df['time'].apply(time_of_day)
时,我得到以下错误:
ValueError: expected hh:mm:ss format
我不确定我在哪里犯的错。有人能帮我纠正这个问题吗?
我认为数据是python对象时间,所以需要将它们转换为字符串:
df['time'].astype(str).apply(time_of_day)