当前位置: 首页 > 面试题库 >

Pandas:时间戳记索引四舍五入到最接近的第5分钟

郎献
2023-03-14
问题内容

我有一个df带有通常时间戳的索引:

    2011-04-01 09:30:00
    2011-04-01 09:30:10
    ...
    2011-04-01 09:36:20
    ...
    2011-04-01 09:37:30

如何为具有相同时间戳但四舍五入到最接近的第5分钟间隔的该数据帧创建一列?像这样:

    index                 new_col
    2011-04-01 09:30:00   2011-04-01 09:35:00        
    2011-04-01 09:30:10   2011-04-01 09:35:00
    2011-04-01 09:36:20   2011-04-01 09:40:00
    2011-04-01 09:37:30   2011-04-01 09:40:00

问题答案:

round_to_5min(t)使用timedelta算术的解决方案是正确的,但是很复杂而且很慢。而是Timstamp在pandas中使用漂亮的东西:

import numpy as np
import pandas as pd

ns5min=5*60*1000000000   # 5 minutes in nanoseconds 
pd.to_datetime(((df.index.astype(np.int64) // ns5min + 1 ) * ns5min))

让我们比较一下速度:

rng = pd.date_range('1/1/2014', '1/2/2014', freq='S')

print len(rng)
# 86401

# ipython %timeit 
%timeit pd.to_datetime(((rng.astype(np.int64) // ns5min + 1 ) * ns5min))
# 1000 loops, best of 3: 1.01 ms per loop

%timeit rng.map(round_to_5min)
# 1 loops, best of 3: 1.03 s per loop

快大约1000倍!



 类似资料:
  • 问题内容: 在Java中这怎么可能? 我有一个浮动货币,我想将其四舍五入到最接近的.5。 例如: 1.1应该四舍五入到1.0 1.3应该四舍五入到1.5 2.5应该四舍五入到2.5 3.223920应该四舍五入到3.0 编辑 :另外,我不只是想要字符串表示形式,还希望在此之后使用实际的float。 问题答案: @SamiKorhonen在评论中说: 乘以二,取整,最后除以二 所以这是代码: 输出:

  • 问题内容: 我来到了Java程序的一部分,我需要四舍五入到最接近的百位数,并认为可能有某种方法可以做到这一点,但我想没有。因此,我在网上搜索了示例或任何答案,但由于所有示例看起来都接近最接近的一百,因此至今仍未找到任何答案。我只想这样做并向上取整。也许有一些我忽略的简单解决方案。我已经尝试了其他功能,但到目前为止还没有找到答案。如果有人可以帮助我解决这个问题,我将不胜感激。 如果我的电话号码是20

  • 问题内容: 我试图找到一种方法将值四舍五入到最接近的0.05。例如: 0.93四舍五入为0.95 0.81四舍五入为0.80 0.65停留0.65 0.68至0.70 0.67至0.65 用Java有没有简单的方法可以做到这一点? 问题答案: 一种选择如下: 将该值乘以20。 使用进行四舍五入为最接近的整数。 再除以20。 例如: 希望这可以帮助!

  • 问题内容: 如何在MySQL中将时间舍入到最接近的15分钟(例如0、15、30、45)? 问题答案: 在此示例中,我使用CURTIME()作为输入时间,但是您可以使用任何时间字段。 900秒= 15分钟(四舍五入的时间),450秒是(提供四舍五入元素的)一半。我已经用1800/900测试了最近的半小时,应该与其他人一起工作(600/300持续10分钟等)。

  • 问题内容: 我有两个Int值(它们必须是Ints),我希望它们在方程式中四舍五入到最接近的值; 该方程使变量始终向下舍入到最小值。例如,以下数字表示; 20000/7000等于2.857 …但是变量显示。 我如何舍入到最接近的数字 而不将其更改为Double 问题答案: 对于 非负 整数,以下函数以纯整数算术给出所需的结果: 例子: 这个想法是 这是任意签名的整数的一种可能实现,该整数也不会溢出:

  • 我有两个Int值(它们必须是Int ),当在一个等式中时,我希望它们四舍五入到最近的值; 此等式使变量始终四舍五入到最小值。例如,数字如下所示; 20000 / 7000 等于 2.857...但变量显示 。 如何使四舍五入到最接近的数字而不将其更改为双精度