【发布时间】:2025-11-21 19:10:01
【问题描述】:
我有一个带有 3 个时间戳的变量。
a = DatetimeIndex(['2016-01-26 20:30:00', '2016-01-26 21:30:00','2016-01-26 22:30:00'],
dtype='datetime64[ns]', freq='H')
我现在了解到,round 函数根据这些规则进行舍入,“当两个整数之间的中间时,选择偶数。”
a.round('H')
DatetimeIndex(['2016-01-26 20:00:00', '2016-01-26 22:00:00','2016-01-26 22:00:00'],
dtype='datetime64[ns]', freq=None)
我如何确保它将所有 30 分钟的时间戳(例如 20:30、19:30)四舍五入到下一小时。
谢谢!
编辑:
我已经从Pandas Timestamp rounds 30 seconds inconsistently尝试了以下功能
def half_up_minute(x):
m = (x - x.floor('H')).total_seconds() < 30 # Round True Down, False Up
return x.where(m).floor('H').fillna(x.ceil('H'))
但得到以下错误:
TypeError: 'value' must be a scalar, passed: DatetimeIndex
【问题讨论】:
-
答案是关于
30S,但我认为和这里一样。 -
该功能对我不起作用。我收到一个错误:
AttributeError: 'DatetimeIndex' object has no attribute 'dt当我删除.dt时,我收到以下错误:TypeError: 'value' must be a scalar, passed: DatetimeIndex -
只删除
.dt -
好的,我去测试一下。预期输出为
21,22,23? -
@jezrael 是的,是的
标签: python pandas datetime timestamp