Python 如何获取datetime所在的时段开始和时段结束日期时间值?

Python 如何获取datetime所在的时段开始和时段结束日期时间值?,python,pandas,Python,Pandas,换一种方式来回答这个问题:pandas是否有办法获得特定datetime所包含的bin/窗口限制,datetime是否是重新采样的索引的一部分 各种重采样频率(如七月份结束的季度的Q-JUL)非常有用,如果能够获得单个窗口适合的范围,以便在滤波器中使用,那将是一件好事。例如:“筛选结果以仅包括与X在同一时间窗口中的结果。” 我正在寻找一个类似这样的函数(pd.get\u datetime\u limits(rule,dt): ie:跳过一年的测试点,你会得到不同的限制 注意:我很确定该示例中的上

换一种方式来回答这个问题:pandas是否有办法获得特定datetime所包含的bin/窗口限制,datetime是否是重新采样的索引的一部分

各种重采样频率(如七月份结束的季度的Q-JUL)非常有用,如果能够获得单个窗口适合的范围,以便在滤波器中使用,那将是一件好事。例如:“筛选结果以仅包括与X在同一时间窗口中的结果。”

我正在寻找一个类似这样的函数(
pd.get\u datetime\u limits(rule,dt)

ie:跳过一年的测试点,你会得到不同的限制

注意:我很确定该示例中的上/下界不是正确的,因为哪一端是包含的,哪一端是不包含的,但它们是用来说明这一点的。此外,想要得到精确的匹配边界是首先需要函数的一个重要原因!

这是怎么回事:

#set up frame with datatime index at 7d intervals
rng = pd.date_range('1/1/2011', periods=1000, freq='7D')
df = pd.DataFrame({'value':range(1,1001),'date':rng})
df.set_index('date', inplace =True)

#define your rule
Rule = 'Q-JUL'
Date = '2011-03-30'
然后将规则应用于datatime索引,并应用于使用“to_period”进行筛选的datetime对象:

df1 = df[df.index.to_period(Rule) == pd.to_datetime(Date).to_period(Rule)]
如果需要
min()
max()


对于特定时间段,您可以使用
start\u time
end\u time
(重复使用JAB的一些示例):

对于整个期间,使用
来标记时间戳

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
[17]中的
:pi.to_时间戳(how='start')
出[17]:
[2014-11-01, ..., 2015-05-01]
长度:5,频率:无,时区:无
在[18]中:pi.to_时间戳(how='end')
出[18]:
[2015-01-31, ..., 2015-07-31]
长度:5,频率:无,时区:无
df1.index.min()
df1.index.max()
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')
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