在熊猫数据farme中的时间戳到下一个10分钟的圆形分钟值

时间:2017-09-20 15:47:22

标签: python pandas

我在pandas中有一个数据farme,其中有一个名为timestamp的列。内容如下。

timestamp
2016-09-01 10:21:00 
2016-09-01 16:52:00 
2016-10-31 18:40:00 

现在我想将时间戳中的minutes四舍五入到next 10 minutes

expected result低于

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 

我应该怎么做才能获得理想的结果

1 个答案:

答案 0 :(得分:2)

使用:

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]