将时间四舍五入到最接近的20分钟间隔

心靈之曲
发布: 2025-10-21 11:05:01
原创
701人浏览过

将时间四舍五入到最接近的20分钟间隔

本文介绍了如何使用Python将时间四舍五入到最接近的20分钟间隔。通过自定义函数`round_dt`,可以灵活地实现时间的向上或向下调整,使其符合20分钟的间隔要求。此外,本文还展示了如何将此函数应用于Pandas DataFrame中的时间列,以便批量处理时间数据。

Python时间四舍五入到指定间隔

在数据处理中,经常需要将时间数据进行规整,例如将时间四舍五入到最接近的指定间隔。本文将介绍如何使用Python的datetime模块实现将时间四舍五入到最接近的20分钟间隔,并将其应用于Pandas DataFrame。

自定义时间四舍五入函数

首先,我们需要定义一个函数,该函数接受一个datetime对象和一个timedelta对象作为输入,并将datetime对象四舍五入到最接近的timedelta间隔。

from datetime import datetime, timedelta

def round_dt(dt, delta):
    increase = (datetime.min - dt) % delta
    if increase < delta / 2:
        return dt + increase
    else:
        return dt + increase - delta

# 示例
now = datetime(2023, 2, 24, 12, 21, 00)
print(now)    
print(round_dt(now, timedelta(minutes=20)))
登录后复制

在上述代码中,round_dt函数首先计算dt距离上一个delta间隔的差值increase。如果increase小于delta的一半,则将dt向上调整increase,否则将dt向下调整delta - increase。

美间AI
美间AI

美间AI:让设计更简单

美间AI 45
查看详情 美间AI

将函数应用于Pandas DataFrame

接下来,我们将展示如何将round_dt函数应用于Pandas DataFrame中的时间列。

import pandas as pd
from functools import partial

data = pd.DataFrame({
'Experiment_ID': [52.0, 52.1, 52.2, 55.0, 55.1, 55.2, 56.0, 56.1, 56.2, 56.3, 56.4,
                 57.0, 57.1, 57.2, 59.0, 59.1, 60.0, 61.0, 62.0, 62.1, 62.2, 63.0,
                 63.1, 64.0, 64.1, 64.2, 65.0, 65.1, 65.2, 66.0],
'Datetime': ['2023-02-24 11:34:00', '2023-02-24 12:37:00', '2023-02-24 13:36:00', '2023-03-08 11:13:00',
               '2023-03-08 12:18:00', '2023-03-08 13:18:00', '2023-03-16 10:03:00', '2023-03-16 11:03:00',
               '2023-03-16 11:40:00', '2023-03-16 12:06:00', '2023-03-16 13:04:00', '2023-03-22 10:56:00',
               '2023-03-22 12:05:00', '2023-03-22 13:09:00', '2023-04-05 11:25:00', '2023-04-05 12:35:00',
               '2023-04-07 12:50:00', '2023-04-11 15:00:00', '2023-04-13 10:47:00', '2023-04-13 11:47:00',
               '2023-04-13 12:47:00', '2023-04-19 10:45:00', '2023-04-19 13:00:00', '2023-04-20 10:36:00',
               '2023-04-20 11:33:00', '2023-04-20 12:35:00', '2023-04-26 10:53:00', '2023-04-26 12:01:00',
               '2023-04-26 12:30:00', '2023-05-11 10:22:00']})

# 将'Datetime'列转换为datetime对象
data['Datetime'] = pd.to_datetime(data['Datetime'])

# 使用functools.partial预先绑定delta参数
round_to_20min = partial(round_dt, delta=timedelta(minutes=20))

# 将round_dt函数应用于'Datetime'列
data['Datetime_Rounded'] = data['Datetime'].apply(round_to_20min)

print(data)
登录后复制

在上述代码中,我们首先使用pd.to_datetime函数将DataFrame中的'Datetime'列转换为datetime对象。然后,我们使用functools.partial函数预先绑定round_dt函数的delta参数,创建一个新的函数round_to_20min,该函数只接受一个datetime对象作为输入。最后,我们使用apply函数将round_to_20min函数应用于'Datetime'列,并将结果存储在新的'Datetime_Rounded'列中。

总结

本文介绍了如何使用Python将时间四舍五入到最接近的20分钟间隔。通过自定义函数round_dt,可以灵活地实现时间的向上或向下调整,使其符合20分钟的间隔要求。此外,本文还展示了如何将此函数应用于Pandas DataFrame中的时间列,以便批量处理时间数据。使用functools.partial可以简化代码,提高可读性。

以上就是将时间四舍五入到最接近的20分钟间隔的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号