Python 将时间戳中的分钟值舍入到pandas数据场中的下一个十分之一分钟
我在Python 将时间戳中的分钟值舍入到pandas数据场中的下一个十分之一分钟,python,pandas,Python,Pandas,我在pandas中有一个数据场,它有一个名为timestamp的列。内容如下 timestamp 2016-09-01 10:21:00 2016-09-01 16:52:00 2016-10-31 18:40:00 现在,我想将时间戳中的分钟四舍五入到下一个10分钟 预期结果如下所示 timestamp 2016-09-01 10:30:00 2016-09-01 17:00:00 2016-10-31 18:50:00 为此,我创建了如下函数 def round_dateti
pandas
中有一个数据场,它有一个名为timestamp
的列。内容如下
timestamp
2016-09-01 10:21:00
2016-09-01 16:52:00
2016-10-31 18:40:00
现在,我想将时间戳中的分钟
四舍五入到下一个10分钟
预期结果如下所示
timestamp
2016-09-01 10:30:00
2016-09-01 17:00:00
2016-10-31 18:50:00
为此,我创建了如下函数
def round_datetime(dtime, round_to = 10):
tmp = dtime
mins = tmp.minute
tmp = tmp - timedelta(minutes=mins%round_to)
return tmp.strftime('%Y-%m-%d %H:%M:00')
我已将此函数应用于数据帧
df['round_dtime'] = df['timestamp'].apply(lambda x: round_datetime(x))
我得到的结果如下
timestamp
2016-09-01 10:20:00
2016-09-01 16:50:00
2016-10-31 18:40:00
为了获得所需的结果,我应该做些什么使用:
print (df['timestamp'].dt.floor('10T') + pd.offsets.DateOffset(minutes=10))
0 2016-09-01 10:30:00
1 2016-09-01 17:00:00
2 2016-10-31 18:50:00
Name: timestamp, dtype: datetime64[ns]
谢谢你的回答,这对我很有效。但是我想知道为什么我的函数没有给出预期的结果。将tmp=tmp-timedelta(分钟=mins%round\u-to)
更改为tmp=tmp+timedelta(分钟=round\u-mins%round\u-to)
。或者更好的tmp=tmp-pd.timedelta(分钟=(分钟%round\u-round\u-to))