Python:将时间四舍五入到最接近的秒和分钟
我有一个叫做 DataFrame
的数据表,其中有一列叫做 Timestamp
,这个列里的每个值表示从午夜开始经过的秒数,精确到纳秒。举个例子:
Timestamp
34200.984537482
34201.395432198
比如说,34200秒就是早上9点30分。
我想在我的 dataframe
中新增两列,分别叫做 Second
和 Minute
,其中 Timestamp
的值会被四舍五入到最近的秒和分钟(向前看)。所以
Timestamp Second Minute
34200.984537482 34201 34260
34201.395432198 34202 34260
我该如何在Python中实现这个呢?另外,我应该使用Pandas的 DateTimeIndex
吗?因为一旦我把时间四舍五入后,我还想计算每个时间戳之间的时间差,所以也许使用 DateTimeIndex
更合适。
2 个回答
2
如果你想要得到最接近的秒数,可以使用 math.ceil
这个函数,像这样:
import math
second = math.ceil(timestamp)
如果你想要得到最接近的分钟,先把数字除以 60.0,然后四舍五入,最后再乘以 60。
4
这里有一个Series的round方法:
In [11]: df.Timestamp.round()
Out[11]:
0 34201
1 34201
Name: Timestamp, dtype: float64
In [12]: df.Timestamp.round(1)
Out[12]:
0 34201.0
1 34201.4
Name: Timestamp, dtype: float64
In [13]: df.Timestamp.round(-1)
Out[13]:
0 34200
1 34200
Name: Timestamp, dtype: float64
我建议使用datetime64或者DatetimeIndex,而不是用从午夜开始的秒数来表示时间……处理时间是很复杂的。
有一个简单的方法可以得到一个正确的日期时间列:
In [21]: pd.Timestamp('2014-03-04') + df.Timestamp.apply(pd.offsets.Second)
Out[21]:
0 2014-03-04 09:30:00
1 2014-03-04 09:30:01
Name: Timestamp, dtype: datetime64[ns]