Python Pandas – 使用每分钟的频率四舍五入Timedelta
在实际工作中,我们常常会遇到需要将某段时间按每分钟的频率进行四舍五入的情况。在 Python 的 Pandas 库中,我们可以利用 Timedelta 对象来实现这一需求。本文将介绍如何使用 Pandas 中的 Timedelta 对象来实现每分钟的频率四舍五入。
Timedelta 简介
在 Pandas 中,Timedelta 是一个用于表示时间差的对象,可以用来表示时间段。我们可以通过创建 Timedelta 对象来对时间进行基本的运算操作,例如加、减、乘、除等。
Timedelta 对象的构造方法有多种,最常用的方式是直接传入一个字符串,字符串的格式为 days+hours:minutes:seconds。例如:
import pandas as pd
# 创建 Timedelta 对象
delta1 = pd.Timedelta('1 day 2 hours 3 minutes 4 seconds')
delta2 = pd.Timedelta('2 hours 30 minutes')
delta3 = pd.Timedelta('-1 day')
# 输出结果
print(delta1) # 1 day 02:03:04
print(delta2) # 0 days 02:30:00
print(delta3) # -1 days +00:00:00
使用 Timedelta 对象进行时间运算
在 Pandas 中,我们可以使用 Timedelta 对象来进行时间的加减运算和比较运算。例如:
import pandas as pd
# 定义时间点
start_time = pd.Timestamp('2022-1-1 08:30:00')
end_time = pd.Timestamp('2022-1-2 16:45:28')
# 计算时间差
delta = end_time - start_time
# 输出结果
print(delta) # 1 days 08:15:28
# 将时间点按照时间差进行偏移
new_time = start_time + delta
# 输出结果
print(new_time) # 2022-01-03 01:45:28
将时间进行频率转换
在 Pandas 中,我们可以将时间进行频率转换。例如,我们可以将每分钟转换为每 10 分钟。在进行频率转换时,会出现一些时间上的不连续点,需要通过插值的方式进行填充。Pandas 提供了多种插值方式,如前向填充、后向填充、线性插值等。
import pandas as pd
# 创建时间序列
date_rng = pd.date_range(start='2022-1-1 00:00:00', end='2022-1-1 01:00:59', freq='min')
df = pd.DataFrame(date_rng, columns=['date'])
# 将时间序列转换为每 10 分钟
df['date'] = df['date'].dt.round('10min')
# 输出结果
print(df)
以上代码将每分钟转换为每 10 分钟。输出结果如下:
date
0 2022-01-01 00:00:00
1 2022-01-01 00:10:00
2 2022-01-01 00:10:00
3 2022-01-01 00:20:00
4 2022-01-01 00:20:00
5 2022-01-01 00:30:00
6 2022-01-01 00:30:00
7 2022-01-01 00:40:00
8 2022-01-01 00:40:00
9 2022-01-01 00:50:00
10 2022-01-01 00:50:00
11 2022-01-01 01:00:00
将时间按照每分钟的频率四舍五入
在实际工作中,我们常常需要将时间按照每分钟的频率进行四舍五入。在 Pandas 中,我们可以使用 Timedelta 对象来实现这一需求。具体方法是,将时间转换为 Timedelta 对象,然后将 Timedelta 对象四舍五入到最近的分钟,最后再与起始时间相加,得到四舍五入后的时间。
以下是示例代码:
import pandas as pd
# 定义起始时间和待四舍五入的时间
start_time = pd.Timestamp('2022-1-1 08:30:00')
round_time = pd.Timestamp('2022-1-1 08:32:35')
# 计算时间差
delta = round_time - start_time
# 将时间差转换为分钟
minutes = delta / pd.Timedelta(minutes=1)
# 四舍五入到最近的分钟
rounded_minutes = round(minutes)
# 将四舍五入后的时间转换回 Timedelta 对象
rounded_delta = pd.Timedelta(minutes=rounded_minutes)
# 将四舍五入后的时间与起始时间相加,得到四舍五入后的时间
rounded_time = start_time + rounded_delta
# 输出结果
print(rounded_time) # 2022-01-01 08:33:00
以上代码将时间 2022-1-1 08:32:35 按照每分钟的频率进行四舍五入,得到的结果为 2022-01-01 08:33:00。
结论
本文介绍了如何使用 Pandas 中的 Timedelta 对象来实现每分钟的频率四舍五入。通过将时间转换为 Timedelta 对象,并将 Timedelta 对象四舍五入到最近的分钟,最后再与起始时间相加,即可得到四舍五入后的时间。
在实际工作中,将时间按照特定的频率进行四舍五入是一项常见的需求。通过掌握本文介绍的方法,读者可以轻松地实现这一需求,并加快工作效率。
极客笔记