我有一个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...但变量显示 。 如何使四舍五入到最接近的数字而不将其更改为双精度