如何在熊猫中设置日期时间地板操作的基础?

我想重新分配一系列日期的时间戳,以便它们以(例如)3 天的频率下降:


import pandas as pd


x = pd.date_range('01-01-2019', freq='1D', periods=7).floor('3D')

y = pd.date_range('01-01-2022', freq='1D', periods=7).floor('3D')

我期待“地板”与第一个日期对齐并产生:


In[3]: x

Out[3]: 

DatetimeIndex(['2019-01-01', '2019-01-01', '2019-01-01', '2019-01-04',

               '2019-01-04', '2019-01-04', '2019-01-07'],

              dtype='datetime64[ns]', freq=None)


In[4]: y

Out[4]:

DatetimeIndex(['2022-01-01', '2022-01-01', '2022-01-01', '2022-01-04',

               '2022-01-04', '2022-01-04', '2022-01-07'],

              dtype='datetime64[ns]', freq=None)

但相反,日期似乎有一个 3 天的周期(大概是自 1970 年 1 月 1 日以来 3 天的倍数?),所以结果是:


In[3]: x

Out[3]: 

DatetimeIndex(['2018-12-30', '2019-01-02', '2019-01-02', '2019-01-02',

               '2019-01-05', '2019-01-05', '2019-01-05'],

              dtype='datetime64[ns]', freq=None)


In[4]: y

Out[4]:

DatetimeIndex(['2022-01-01', '2022-01-01', '2022-01-01', '2022-01-04',

               '2022-01-04', '2022-01-04', '2022-01-07'],

              dtype='datetime64[ns]', freq=None)

结果x从 12 月 30 日开始,而不是 1 月 1 日。


有没有办法为floor熊猫的操作设置一个“基地”? 我说“基础”是因为关于进行类似调整的base争论resample。但我不想做任何聚合,只保留每个元素但重新分配时间戳。


慕田峪4524236
浏览 69回答 1
1回答

明月笑刀无情

x = pd.date_range('01-01-2019', freq='1D', periods=7)y = pd.date_range('01-01-2022', freq='1D', periods=7)def floor(x, freq):    offset = x[0].ceil(freq) - x[0]    return (x + offset).floor(freq) - offsetprint(floor(x, '3D'))print(floor(y, '3D'))输出DatetimeIndex(['2019-01-01', '2019-01-01', '2019-01-01', '2019-01-04',               '2019-01-04', '2019-01-04', '2019-01-07'],              dtype='datetime64[ns]', freq=None)DatetimeIndex(['2022-01-01', '2022-01-01', '2022-01-01', '2022-01-04',               '2022-01-04', '2022-01-04', '2022-01-07'],              dtype='datetime64[ns]', freq=None)添加加法逻辑:def floor(x, freq):    offset = x[0].ceil(freq) - x[0]    adj_needed = (offset != pd.Timedelta(0))    return (x + offset).floor(freq) - offset if adj_needed else x.floor(freq)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python