我有一个DataFrame
列Timestamp
,其中每个值都是自午夜以来纳秒精度的秒数。例如:
Timestamp
34200.984537482
34201.395432198
等等。从午夜开始的34200秒是上午9:30:00。
我想在dataframe
中创建一个新条目,其中一列Second
和Minute
我将Timestamp
四舍五入到最接近的第二和第二分钟(前瞻性) 。所以
Timestamp Second Minute
34200.984537482 34201 34260
34201.395432198 34202 34260
我怎样才能在Python中执行此操作?另外,我应该使用Pandas'DateTimeIndex
吗?一旦我绕过时间,我将计算每个时间戳之间的时间差,所以可能DateTimeIndex更合适。
答案 0 :(得分:4)
有一系列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]
答案 1 :(得分:2)
对于最近的秒,只需使用math.ceil
,所以:
import math
second = math.ceil(timestamp)
对于最近的分钟,除以60.0,然后乘以60。