
本文介绍了如何使用Python将时间四舍五入到最接近的20分钟间隔。通过自定义函数`round_dt`,可以灵活地实现时间的向上或向下调整,使其符合20分钟的间隔要求。此外,本文还展示了如何将此函数应用于Pandas DataFrame中的时间列,以便批量处理时间数据。
在数据处理中,经常需要将时间数据进行规整,例如将时间四舍五入到最接近的指定间隔。本文将介绍如何使用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。
接下来,我们将展示如何将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中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号