首页 > 解决方案 > 将 pandas 日期时间列向下舍入到前一分钟

问题描述

我的数据框如下所示:

      price                timestamp  amount  side
0  0.001728  2019-05-01 22:48:49.082    29.0   buy
1  0.001729  2019-05-01 21:26:22.078    31.0  sell
2  0.001730  2019-05-01 18:05:30.953    32.0   buy
3  0.001726  2019-05-01 18:05:40.412    32.0  sell
4  0.001730  2019-05-01 16:59:51.127    32.0  sell
5  0.001741  2019-05-01 12:23:19.957    32.0   buy

我想要的是以下内容:

      price           timestamp  amount  side
0  0.001728 2019-05-01 22:48:00    29.0   buy
1  0.001729 2019-05-01 21:26:00    31.0  sell
2  0.001730 2019-05-01 18:05:00    32.0   buy
3  0.001726 2019-05-01 18:05:00    32.0  sell
4  0.001730 2019-05-01 16:59:00    32.0  sell
5  0.001741 2019-05-01 12:23:00    32.0   buy

我尝试了什么:

df['timestamp'] = pd.to_datetime(df['timestamp'], unit='%Y%m%d %H:%M')

但它并没有改变我的数据框......知道为什么吗?谢谢!

标签: pythonpandasdatetime

解决方案


尝试使用以下方法将地板铺到前一分钟dt.floor

pd.to_datetime(df['timestamp'], errors='coerce').dt.floor('min')

0   2019-05-01 22:48:00
1   2019-05-01 21:26:00
2   2019-05-01 18:05:00
3   2019-05-01 18:05:00
4   2019-05-01 16:59:00
5   2019-05-01 12:23:00
Name: timestamp, dtype: datetime64[ns]

df.assign(
    timestamp=pd.to_datetime(df['timestamp'], errors='coerce').dt.floor('min'))

      price           timestamp  amount  side
0  0.001728 2019-05-01 22:48:00    29.0   buy
1  0.001729 2019-05-01 21:26:00    31.0  sell
2  0.001730 2019-05-01 18:05:00    32.0   buy
3  0.001726 2019-05-01 18:05:00    32.0  sell
4  0.001730 2019-05-01 16:59:00    32.0  sell
5  0.001741 2019-05-01 12:23:00    32.0   buy

推荐阅读