中期和月末的Pandas date_range()

问题描述 投票:1回答:1

我可以使用指定月末的日期范围

import pandas as pd
monthend_range = pd.date_range(datetime.date(2017,12,10), datetime.date(2018,2,2), freq='BM')

有没有一种直接的方法可以将月中包括在上面的范围内,形成一个中期和月末指数?假设我们想要的逻辑是在上面的代码中使用连续的月末,并找到正好在星期中间的工作日。如果那不是营业日,那么请在第二天和下一天尝试,直到我们开始工作日。

预期的产出是

['2017-12-29', '2018-01-16', '2018-01-31']

这可能看起来有些不一致,因为2017-12-15是该日期范围内的月中。但程序是几个月的结束,然后在两端之间进行插值。当然,除非有更好的方法来处理这个问题。

python pandas date-range
1个回答
0
投票

想法是为每个值创建工作日范围,省略第一个,在中间选择值,最后使用Index.union加入togetehr:

a = [] 
for x in monthend_range[1:]:
    r = pd.date_range(x.to_period('m').to_timestamp(), x, freq='B')
    a.append(r[len(r)//2])
print (a)
[Timestamp('2018-01-16 00:00:00', freq='B')]

out = monthend_range.union(a)
print (out)           
DatetimeIndex(['2017-12-29', '2018-01-16', '2018-01-31'], dtype='datetime64[ns]', freq=None)
© www.soinside.com 2019 - 2024. All rights reserved.