【问题标题】:Pandas date_range() for middle and end of monthPandas date_range() 用于月中和月末
【发布时间】:2019-03-28 08:14:49
【问题描述】:

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

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】:

想法是为每个值创建工作日范围,首先省略并在中间选择值,最后使用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)

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    相关资源
    最近更新 更多