熊猫月中下旬的date_range()

时间:2019-03-28 08:14:50

标签: python pandas date-range

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

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是日期范围内的月份中间。但是程序要到月底,然后在两端之间进行插值。除非当然有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分: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)