有一个这样的熊猫数据框:
index
2018-06-01 02:50:00 R 45.48 -2.8
2018-06-01 07:13:00 R 45.85 -2.0
...
2018-06-01 08:37:00 R 45.87 -2.7
我想将索引四舍五入为小时:
index
2018-06-01 02:00:00 R 45.48 -2.8
2018-06-01 07:00:00 R 45.85 -2.0
...
2018-06-01 08:00:00 R 45.87 -2.7
我正在尝试以下代码:
df = df.date_time.apply ( lambda x : x.round('H'))
但返回一个序列,而不是带有修改后的索引列的数据框
答案 0 :(得分:4)
尝试使用floor
:
df.index.floor('H')
设置:
df = pd.DataFrame(np.arange(25),index=pd.date_range('2018-01-01 01:12:50','2018-01-02 01:12:50',freq='H'),columns=['Value'])
df.head()
Value
2018-01-01 01:12:50 0
2018-01-01 02:12:50 1
2018-01-01 03:12:50 2
2018-01-01 04:12:50 3
2018-01-01 05:12:50 4
df.index = df.index.floor('H')
df.head()
Value
2018-01-01 01:00:00 0
2018-01-01 02:00:00 1
2018-01-01 03:00:00 2
2018-01-01 04:00:00 3
2018-01-01 05:00:00 4
答案 1 :(得分:2)
尝试一下
df['index'].apply(lambda dt: datetime.datetime(dt.year, dt.month, dt.day, dt.hour,60*(dt.minute // 60)))
答案 2 :(得分:2)
尝试我的方法:
按小时的四舍五入值添加新列:
.deb
将其设置为索引:
df['E'] = df.index.round('H')
删除您设置的名称(此处为“ E”):
df1 = df.set_index('E')
现在,df1是一个新的DataFrame,其索引小时数从df取整。