Pandas 仅对时间列进行分级,而不是自定义范围内的日期
Pandas Binning Only Time Column Not Date From a Custom Range
我在 DataFrame 中有一个 timestamp_time
列(字符串格式)
timestamp_time
11:59 AM
5:06 AM
11:04 PM
5:06 PM
....
....
12:00 AM
12:01 PM
我想对这些范围(含)内的值进行分类
morning -> 5AM to 11:59AM
afternoon ->12PM to 4:59PM
evening -> 5PM to 8:59PM
night -> 9PM to 11:59PM
midnight -> 12AM to 4:59AM
我想根据 timestamp_time
列
中的值(和提到的范围)生成一个新的 time_of_the_day
列
输出将是这样的
time_of_the_day
morning
morning
night
evening
....
....
midnight
afternoon
我将 timestamp_time
转换为 24 小时时间格式
下一步做什么?
您需要一个函数将特定时间转换为时间范围(time_of_the_day)
def time_range(time):
hour = datetime.strptime(time, '%I:%M %p').hour
if hour > 20:
return "Night"
elif hour > 16:
return "Evening"
elif hour > 11:
return "Afternoon"
elif hour > 4:
return "Morning"
else:
return "Midnight"
然后使用我们创建的函数的 apply 方法来转换您的数据,并将其设置为您的新列(特征)
df["time_of_the_day"] = df.timestamp_time.apply(lambda time: time_range(time))
我在 DataFrame 中有一个 timestamp_time
列(字符串格式)
timestamp_time
11:59 AM
5:06 AM
11:04 PM
5:06 PM
....
....
12:00 AM
12:01 PM
我想对这些范围(含)内的值进行分类
morning -> 5AM to 11:59AM
afternoon ->12PM to 4:59PM
evening -> 5PM to 8:59PM
night -> 9PM to 11:59PM
midnight -> 12AM to 4:59AM
我想根据 timestamp_time
列
time_of_the_day
列
输出将是这样的
time_of_the_day
morning
morning
night
evening
....
....
midnight
afternoon
我将 timestamp_time
转换为 24 小时时间格式
下一步做什么?
您需要一个函数将特定时间转换为时间范围(time_of_the_day)
def time_range(time):
hour = datetime.strptime(time, '%I:%M %p').hour
if hour > 20:
return "Night"
elif hour > 16:
return "Evening"
elif hour > 11:
return "Afternoon"
elif hour > 4:
return "Morning"
else:
return "Midnight"
然后使用我们创建的函数的 apply 方法来转换您的数据,并将其设置为您的新列(特征)
df["time_of_the_day"] = df.timestamp_time.apply(lambda time: time_range(time))