【问题标题】:Filter date range for week of month过滤每月一周的日期范围
【发布时间】:2014-02-07 00:57:55
【问题描述】:

我有一个通过 pandas.DataFrame.from_csv 读取的 csv 文件。

我想过滤那些包含某个月的第三个星期五或日期索引或其中一列中的任何月份的行。

我玩过dateutilpandas.datetools.WeekOfMonth(week=2,weekday=4) 但还是想不通。

【问题讨论】:

  • 你能从你的 csv 中发布一个示例数据吗?

标签: python-2.7 pandas


【解决方案1】:

您的 csv 文件示例将帮助我们回答您的问题。我假设您使用的是时间戳,这是真的吗?

您可以尝试通过制作时间戳列表来进行过滤(此处的开始日期和结束日期是任意的,可能会出现在您的 csv 文件中的第一行和最后一行):

start_date='1/1/2010'
finish_date='10/1/2010'

third_friday_timestamps = pd.date_range(start_date,finish_date, freq='WOM-3FRI')

这将给出一系列时间戳。使用本系列,您可以使用 here 解释的策略过滤来自 csv 文件的数据帧。我希望这会有所帮助。

【讨论】:

  • 这几乎就是我想要的。然而,
  • 这几乎就是我想要的。但是,我需要每月的第三个星期六,例如 WOM-3SAT。我尝试将 WOM-3SAT 作为 date_range-frequency,但出现错误。我尝试通过 3rdfriday_timestamps+pandas.tseries.offsets.Day(1) 但再次出错。不支持这个频率吗?有没有其他选择?而且-我找不到任何关于 pandas.date_range 中支持哪些频率的详细文档,而且我什至不知道 r3d Friday 频率。 (我对 Pandas 很陌生)有什么好的文档吗?
  • @user3276418 如果这有帮助并且您正式接受我的回答,我可以使用声誉,谢谢!它仅适用于工作日。如果您需要在周末休息一天,这里有一些文档可以帮助您解决这个问题:pandas.pydata.org/pandas-docs/stable/timeseries.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2013-03-09
  • 1970-01-01
  • 2017-02-23
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多