熊猫仅分箱时间列而不是自定义范围中的日期[重复]

Posted

技术标签:

【中文标题】熊猫仅分箱时间列而不是自定义范围中的日期[重复]【英文标题】:Pandas Binning Only Time Column Not Date From a Custom Range [duplicate] 【发布时间】:2021-12-29 06:00:56 【问题描述】:

我在 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 小时制时间格式

接下来要做什么?

【问题讨论】:

【参考方案1】:

您将需要一个函数将某个时间转换为时间范围(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))

【讨论】:

谢谢,完美运行 很高兴它对您有所帮助! ?

以上是关于熊猫仅分箱时间列而不是自定义范围中的日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用熊猫中的自定义索引替换数字索引[重复]

自定义验证规则,检查日期范围是不是已经被占用

jqgrid 更改子网格的位置或将子网格图标添加到自定义列而不是其他任何地方?

从日期时间范围创建熊猫数据框[重复]

如何将自定义函数应用于每行的熊猫数据框[重复]

熊猫从日期范围列中提取开始和结束日期[重复]