微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-如果日期不是工作日,Pandas将DatetimeIndex偏移到下一个业务

我有一个与月的最后一天索引的DataFrame.有时这个日期是工作日,有时是周末.忽略假期,如果日期在周末,我希望将日期偏移到下一个营业日,如果已经在工作日,则将结果保持不变.

一些示例数据将是

import pandas as pd
idx = [pd.to_datetime('20150430'), pd.to_datetime('20150531'), 
       pd.to_datetime('20150630')]
df = pd.DataFrame(0, index=idx, columns=['A'])
df

            A
2015-04-30  0
2015-05-31  0
2015-06-30  0

df.index.weekday
array([3, 6, 1], dtype=int32)

类似于以下内容的作品,但是如果有人提出的解决方案更简单一点,我将不胜感激.

idx = df.index.copy()
wknds = (idx.weekday == 5) | (idx.weekday == 6)
idx2 = idx[~wknds]
idx2 = idx2.append(idx[wknds] + pd.datetools.BDay(1))
idx2 = idx2.order()
df.index = idx2
df

            A
2015-04-30  0
2015-06-01  0
2015-06-30  0

解决方法:

您可以添加0 * BDay()

from pandas.tseries.offsets import BDay
df.index = df.index.map(lambda x : x + 0*BDay())

如果有假期,您还可以将其与带有CDay(calendar)的假期日历一起使用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐