Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将时间戳中的分钟值舍入到pandas数据场中的下一个十分之一分钟_Python_Pandas - Fatal编程技术网

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))