给定一个以24小时日期时间为索引的数据框,将日期时间四舍五入为天似乎可以增加1200小时后的“天”。
这是另一个示例中的修改后的代码段,可生成随机数。
请注意,将输出日期时间索引“天”与四舍五入的“天”相比较。
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(1), freq='H')
np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))
df = pd.DataFrame({'test': days, 'col2': data})
df = df.set_index('test')
df['datetime_rounded'] = df.index.round('D')
print(df)
...
2018-10-12 10:19:29.907421 43 2018-10-12
2018-10-12 11:19:29.907421 77 2018-10-12
2018-10-12 12:19:29.907421 95 2018-10-13
2018-10-12 13:19:29.907421 79 2018-10-13
如何确保四舍五入的“天”在日期时间索引“天”的结尾处结束?
谢谢
答案 0 :(得分:1)
预计round
函数会四舍五入到最近的日期,因此12:00:00
之后它会在第二天返回。
我认为您想要DatetimeIndex.floor
或DatetimeIndex.ceil
:
df['datetime_round'] = df.index.round('d')
df['datetime_floor'] = df.index.floor('d')
df['datetime_ceil'] = df.index.ceil('d')
print(df)
col2 datetime_round datetime_floor datetime_ceil
test
2018-10-11 10:39:32.233426 29 2018-10-11 2018-10-11 2018-10-12
2018-10-11 11:39:32.233426 56 2018-10-11 2018-10-11 2018-10-12
2018-10-11 12:39:32.233426 82 2018-10-12 2018-10-11 2018-10-12
2018-10-11 13:39:32.233426 13 2018-10-12 2018-10-11 2018-10-12
2018-10-11 14:39:32.233426 35 2018-10-12 2018-10-11 2018-10-12
2018-10-11 15:39:32.233426 53 2018-10-12 2018-10-11 2018-10-12
2018-10-11 16:39:32.233426 25 2018-10-12 2018-10-11 2018-10-12
2018-10-11 17:39:32.233426 23 2018-10-12 2018-10-11 2018-10-12
2018-10-11 18:39:32.233426 21 2018-10-12 2018-10-11 2018-10-12
2018-10-11 19:39:32.233426 12 2018-10-12 2018-10-11 2018-10-12
2018-10-11 20:39:32.233426 15 2018-10-12 2018-10-11 2018-10-12
2018-10-11 21:39:32.233426 9 2018-10-12 2018-10-11 2018-10-12
2018-10-11 22:39:32.233426 13 2018-10-12 2018-10-11 2018-10-12
2018-10-11 23:39:32.233426 87 2018-10-12 2018-10-11 2018-10-12
2018-10-12 00:39:32.233426 9 2018-10-12 2018-10-12 2018-10-13
2018-10-12 01:39:32.233426 63 2018-10-12 2018-10-12 2018-10-13
2018-10-12 02:39:32.233426 62 2018-10-12 2018-10-12 2018-10-13
2018-10-12 03:39:32.233426 52 2018-10-12 2018-10-12 2018-10-13
2018-10-12 04:39:32.233426 43 2018-10-12 2018-10-12 2018-10-13
2018-10-12 05:39:32.233426 77 2018-10-12 2018-10-12 2018-10-13
2018-10-12 06:39:32.233426 95 2018-10-12 2018-10-12 2018-10-13
2018-10-12 07:39:32.233426 79 2018-10-12 2018-10-12 2018-10-13
2018-10-12 08:39:32.233426 77 2018-10-12 2018-10-12 2018-10-13
2018-10-12 09:39:32.233426 5 2018-10-12 2018-10-12 2018-10-13
2018-10-12 10:39:32.233426 78 2018-10-12 2018-10-12 2018-10-13