【问题标题】:How to find a fixed interval of dates between several months in Pandas?如何在 Pandas 中找到几个月之间的固定日期间隔?
【发布时间】:2021-10-24 05:00:50
【问题描述】:

我想在几年的几个月之间找到一组选定的日期,例如,我想要 (15/01/2018 到 14/02/2018) 和 (15/02/2018 到 14/ 之间的所有日期03/2018)等到(15/11/2020 至 14/12/2020)。

我的数据看起来像


Date        State code    Profit
01-01-2018     1           268
02-01-2018     2           230
   ...        ...          ...
   ...        ...          ...
   ...        ...          ...
31-12-2020     1           740

我想使用与日期 15/MM/YYYY 和 14/MM/YYYY 对应的数据,为此我已经尝试过

pd.date_range(start='15/01/2018',end='14/01/2018',period=30)

pd.date_range(start='15/01/2018',end='14/01/2018',freq=30D)

这无济于事,因为它不会生成所需的日期集。

我也尝试过使用 for 循环:


for i in range(1,13):
   print(pd.date_range(start='15/'+str(i)+'/2018',end='14/'+str(i+1)+'/2018')

但它给出了错误

ValueError: could not convert string to Timestamp

请指导如何达到预期的结果。

【问题讨论】:

  • @ddejohn 是的,但是再次在滚动窗口查询中如何更新月份,如果我必须为每个月的间隔编写日期集是没有意义的。

标签: python pandas date


【解决方案1】:

我不确定您想要的输出是什么,但让我们假设您正在尝试对上述自定义日期范围进行 grouby。这可以通过将所需日期的cutting 数据帧与grouping 间隔组合来完成。首先,您需要有一个日期列表,假设Date 列中的每个日期等于14df['Date'][lambda x: x.dt.day==14])。然后将此反馈给groupby

df.groupby(pd.cut(df['Date'], df['Date'][lambda x: x.dt.day==14]))

【讨论】:

  • 嘿,我想要的输出是 M 月 15 日和 M+1 月 14 日之间的日期列表。
  • 好的,这样就可以了df.groupby(pd.cut(df['Date'], df['Date'][lambda x: x.dt.day==14]))['Date'].apply(list).to_list()
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2023-04-10
相关资源
最近更新 更多