【问题标题】:How to go to the next date in a time series without using timedelta如何在不使用 timedelta 的情况下转到时间序列中的下一个日期
【发布时间】:2024-01-19 20:16:01
【问题描述】:

我有一个非常基本的问题,希望有人指导。

如果我有一个如下开始的较长时间序列,它会跳过某些日期(例如假期等)。我想读取每个日期的值并使用它们执行进一步的计算。索引列是日期时间格式,但是如果我使用 timedelta(1) 转到下一个日期,当我到达缺少的日期时,代码会变得混乱(例如 2017-12-18):

2017-12-15   -1.354562
2017-12-16   -0.911684
2017-12-17   -0.635944
2017-12-20   -0.250884
2017-12-21    0.108373
2017-12-22    0.293125
2017-12-26    0.396881
2017-12-27    0.683924
2017-12-28    0.805295
2017-12-29    0.235709

我的问题是在提供的下一个日期读取值的最简单方法是什么。我可以每次将日期增加一并检查它是否存在于这个时间序列中,否则再次增加它等等。但如果可能的话,我想避免在代码中一次又一次地做这个检查。

有人可以澄清一下什么是正确的命令,可以自动转到下一个日期并读取它的值。

谢谢

【问题讨论】:

  • 请将编程语言添加为tag。您要执行哪些计算?
  • 谢谢 - 已将 Python 和 Anaconda 添加为标签。我想按顺序读取每个日期的分数并将其与固定数字(例如 1)进行比较,如果分数 >1 或
  • 您应该给我们一些您编写的代码,这样人们就可以知道您遇到了什么问题而无需猜测。以您向我展示的数据和我认为您可以做的很多假设为基础。对于日期,stream_of_ 数据中的值:...

标签: python date anaconda time-series next


【解决方案1】:

如果“长时间序列”已经按日期排序

with open('a_long_time_series.txt') as f:
    for line in f:
        value = line.split()[1]
        # process value

如果没有排序

with open('a_long_time_series.txt') as f:
    for line in sorted(f.readlines()):
        value = line.split()[1]
        # process value

【讨论】:

    最近更新 更多