用另一种方式提出问题:如果datetime是要重新取样的索引的一部分,那么熊猫是否有办法获得特定日期时间将包含在其中的bin/window限制?
各种重采样频率(比如7月结束的季度的Q-JUL)是非常有用的,能够得到单个窗口适合的范围是很好的,这样就可以在滤波器中使用。例如:“筛选结果以仅包含与X在同一时间窗口中的结果。”
我在找一个类似于这个虚构的函数(pd.get_datetime_limits(rule, dt)

>>> pd.get_datetime_limits("A", datetime(2014, 12, 31, 23, 59, 59))
(datetime.datetime(2014, 1, 1, 0, 0, 0), datetime.datetime(2014, 12, 31, 23, 59, 59))
>>> pd.get_datetime_limits("A", datetime(2015, 1, 1, 0, 0, 1))
(datetime.datetime(2015, 1, 1, 0, 0, 0), datetime.datetime(2015, 12, 31, 23, 59, 59))

ie:跳过一年的测试点,你会得到不同的限制。
注:我很确定,这个例子中的上下界并不是正确的,因为哪一端是包含的,哪一端不是,但它们是用来说明这一点的。另外,想要得到熊猫精确匹配的边界是首先想要函数的一个重要原因!

最佳答案

对于特定时期,您可以使用start_timeend_time(重复使用JAB的一些示例):

In [11]: rng = pd.date_range('2015-01-01', periods=5, freq='42D')

In [12]: df = pd.DataFrame({'value': np.arange(5)}, index=rng)

In [13]: pi = df.index.to_period("Q-JUL")

In [14]: pi[0]
Out[14]: Period('2015Q2', 'Q-JUL')

In [15]: pi[0].start_time
Out[15]: Timestamp('2014-11-01 00:00:00')

In [16]: pi[0].end_time
Out[16]: Timestamp('2015-01-31 23:59:59.999999999')

对于整个周期,请使用to_timestamp
In [17]: pi.to_timestamp(how='start')
Out[17]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-11-01, ..., 2015-05-01]
Length: 5, Freq: None, Timezone: None

In [18]: pi.to_timestamp(how='end')
Out[18]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2015-01-31, ..., 2015-07-31]
Length: 5, Freq: None, Timezone: None

10-06 07:52
查看更多