我在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
我应该怎么做才能获得理想的结果
答案 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]