按日期 +/- 2 个工作日对 pandas 时间序列进行切片

2024-04-26

具有以下时间序列:

In [65]: p
Out[65]: 
Date
2008-06-02    125.20
2008-06-03    124.47
2008-06-04    124.40
2008-06-05    126.89
2008-06-06    122.84
2008-06-09    123.14
2008-06-10    122.53
2008-06-11    120.73
2008-06-12    121.19
Name: SPY

我如何在特定日期 +/- 2 个相邻(营业)日进行切片,即如​​果 d = '2008-06-06':

 -2   2008-06-04    124.40
 -1   2008-06-05    126.89
  0   2008-06-06    122.84
  1   2008-06-09    123.14
  2   2008-06-10    122.53

Pandas 内置了一些非常好的工作日功能,可以自动处理这个问题。对于这个确切的问题,实际上最终会需要更多的代码,但它会很容易地处理更一般的情况。

In [1]: ind = pd.date_range('2008-06-02', '2008-06-12', freq='B')

In [2]: p = pd.Series(np.random.random(len(ind)), index=ind)

In [3]: p
Out[3]:
2008-06-02    0.606132
2008-06-03    0.328327
2008-06-04    0.842873
2008-06-05    0.272547
2008-06-06    0.013640
2008-06-09    0.357935
2008-06-10    0.517029
2008-06-11    0.992851
2008-06-12    0.053158
Freq: B, dtype: float64

In [4]: t0 = pd.Timestamp('2008-6-6')

In [5]: from pandas.tseries import offsets

In [6]: delta = offsets.BDay(2)

这将创建两个工作日的抵消。您还可以对其他时间单位进行任意偏移,甚至可以对时间单位进行组合。现在有了起点和增量,您可以以标准方式智能切片:

In [7]: p[t0 - delta:t0 + delta]
Out[7]:
2008-06-04    0.842873
2008-06-05    0.272547
2008-06-06    0.013640
2008-06-09    0.357935
2008-06-10    0.517029
Freq: B, dtype: float64

这种方法的好处是间隔与行数无关。因此,举例来说,如果您有每小时的数据,可能还有一些缺失的点,您仍然可以以完全相同的方式捕获两个工作日。或者,如果您的数据源碰巧也有周末数据,但您仍然需要 +/- 2 个工作日。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按日期 +/- 2 个工作日对 pandas 时间序列进行切片 的相关文章

随机推荐

  • 使用Boost获取成员函数的数量和参数类型? (升压::function_traits)

    对于普通的普通函数来说 它工作得很好 下面的代码工作得很好 它只打印应该的内容 int cdecl int char 2 int char include
  • 如何模拟 TCP/IP 错误?

    在多层应用程序上 我需要模拟各种 TCP IP 错误来测试一些重新连接代码 有谁知道我可以使用什么工具 基于 Windows 来实现此目的 谢谢 Scapy http secdev org projects scapy 允许您控制数据包的各
  • 有没有一种 CSS 唯一的方法来完全隐藏部分溢出的元素?

    想象一下 您有一个元素的高度是浏览器窗口高度的百分比 该元素包含一堆块元素 有没有办法使用类似的东西overflow hidden但要确保最后一个块元素在溢出时完全隐藏而不是部分隐藏 使用 JavaScript 很容易做到这一点 但我更喜欢
  • 在ms access中存储大量图像

    我有一个库存 联系人数据库 需要在其中存储大量图像 10k 件物品 1k 人 现在 由于纯粹的膨胀 显然 ole 对象是不可能的 有没有更好的方法来做到这一点 例如存储图像的路径 将存储在数据库的文件夹中 并在我需要的地方显示该图像 这会很
  • 如何在没有 create-react-app 的情况下手动配置 React 的最小设置?

    我不想使用create react app 那么我该如何配置minimal一个简单的反应应用程序的工作开发环境 Note 我知道我可能会包含所有内容在运行时作为 JS https reactjs org docs add react to
  • Django为模型表单返回两个单独的__str__

    我有一个Task包含任务和实体外键的模型 class Task models Model task models CharField max length 500 entity models ForeignKey Entity 我有一个与一
  • 如何在meteor中建立单独的测试和开发数据库

    我已经为我的流星应用程序编写了一些测试 由于他们具有删除所有文档或填充新文档的设置和拆卸方法 因此我想在专用于测试的数据库上运行它们 我注意到数据库存储在 meteor local db 中 理想情况下 我希望从不同的端口访问 db tes
  • Android 2.X 和 3.X 上的 SQLiteOpenHelper 问题

    所以我犯了一个很大的错误 在 android 4 0 上测试我的代码 并认为它在其他版本上也能正常工作 但我在使用 SQLiteOpenHelper 时遇到 2 X 和 3 X 的问题 首先是代码 public class HelperDB
  • 未创建日志文件

    我需要一个可以在项目中的多个类中使用的全局记录器 我想在 ini 文件中设置记录器设置 我开始下面的例子here https stackoverflow com questions 20086754 how to use boost log
  • 获取 pandas 布尔系列为 True 的索引列表

    我有一个带有布尔条目的熊猫系列 我想获得一个索引列表 其中的值是True 例如输入pd Series True False True True False False False True 应该产生输出 0 2 3 7 我可以通过列表理解来
  • 查找大于或等于某个值的所有值

    假设我有下表 Team Score AA 81 BB 67 CC 44 DD 1 5 JJ 279 LL 49 TT 201 GG 158 MM 32 HH 89 我想要将所有得分超过 80 的球队放在另一个表中 我尝试了 Index Ma
  • Web 配置转换不适用于 Visual Studio Online、VS2013 和 Azure

    我有一个 MVC5 网站 使用 Visual Studio Online TFS 的持续集成成功地将暂存和生产版本部署到 Azure 我已经关注了这篇博文 使用自定义部署脚本通过 git 持续交付到 Azure 网站 http chrisk
  • vNext:使用 razor 视图而无需托管的控制台应用程序

    我正在创建执行一些文件转换的控制台应用程序 这些转换可以轻松完成 从输入文件创建模型 然后为输出执行 razor 模型 为了在 IDE 中实现此功能 我使用了 Visual Studio 2015 预览版并创建了一个使用 MVC 的 vne
  • 设置 Azure 中 BLOB 存储的保留期

    我想手动设置保留期 以便在保留期结束后我可以删除存档数据 请向我建议任何可以帮助我的链接或方式 请建议我如何在我的门户中编码来设置它 我已经成功配置了生命周期管理政策 https learn microsoft com en us azur
  • Delphi 拼写检查器

    您好 我正在寻找一个与 Delphi 7 2010 一起使用的免费拼写检查器 任何人都可以给我一个指向吗 我想添加我们在 SynProject 编辑器中使用的 HunSpell 库 它包含在该 GPL 工具的源代码中 http synops
  • 如何将 XML 数据解析为 PHP 变量

    我对 php 很平庸 对 XML 一无所知 如果你能详细一点 它将帮助我学习 我正在尝试使用 PHP 编程来执行此链接的脚本 VARIABLE ZIP 是在表单中输入的实际邮政编码 该表单将在上面的链接中提交信息 该链接的输出创建了一个 X
  • iOS NSDictionary 保存到 NSUserDefaults 不保存值

    我正在尝试保存一个NSDictionary数组值到NSUserDefaults但我遇到了一些奇怪的麻烦 My NSDictionary has NSStrings for keys和每个value is a NSArray of NSNum
  • 在java中用另一个字符串替换字符串

    什么函数可以将一个字符串替换为另一个字符串 示例 1 什么将取代 HelloBrother with Brother 示例 2 什么将取代 JAVAISBEST with BEST The replace http download ora
  • Django 1.7 中的迁移

    我目前正在参与一个使用 Django 1 7 开发版本的项目 我想使用 makemigrations 和 migrate 将我在模型中所做的更改 添加字段 删除模型等 传播到数据库模式中 命令 我向应用程序中的模型之一添加了 年龄 字段 c
  • 按日期 +/- 2 个工作日对 pandas 时间序列进行切片

    具有以下时间序列 In 65 p Out 65 Date 2008 06 02 125 20 2008 06 03 124 47 2008 06 04 124 40 2008 06 05 126 89 2008 06 06 122 84 2