我想使用 pd_date_range()
根据开始和结束时间戳(从纪元开始以微秒为单位)每隔 1 分钟创建一个 DateTimeIndex
。为此,我需要向上舍入开始时间戳并向下舍入结束时间戳。这是我目前所拥有的:
import pandas as pd
start = 1406507532491431
end = 1406535228420914
start_ts = pd.to_datetime(start, unit='us') # Timestamp('2014-07-28 00:32:12.491431')
end_ts = pd.to_datetime(end, unit='us') # Timestamp('2014-07-28 08:13:48.420914')
我要四舍五入:
start_ts
到 Timestamp('2014-07-28 00:32')
和
end_ts
到 Timestamp('2014-07-28 08:14')
。
我该怎么做?
最佳答案
从 0.18 版开始,Pandas 内置了 datetime-like rounding functionality :
start_ts.round('min') # Timestamp('2014-07-28 00:32:00')
end_ts.round('min') # Timestamp('2014-07-28 08:14:00')
如果需要强制向上或向下舍入,也可以使用 .ceil
或 .floor
。
编辑:
根据 OP 的要求,上面的代码适用于原始 pd.Timestamp
。如果您使用的是 pd.Series
,请使用 dt
访问器:
s = pd.Series(pd.to_datetime([1406507532491431000, 1406535228420914000]))
s.dt.round('min')
输出:
0 2014-07-28 00:32:00
1 2014-07-28 08:14:00
dtype: datetime64[ns]
关于python - 将 Pandas 时间戳四舍五入到分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27031169/