Python 从数据帧获取多个最小和最大日期

Python 从数据帧获取多个最小和最大日期,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我需要得到y列大于0的两个时段的最小和最大日期 数据帧: Date Y 25/02/2019 0 24/02/2019 1 23/02/2019 1 22/02/2019 0 21/02/2019 1 20/02/2019 1 19/02/2019 1 18/02/2019 0 17/02/2019 0 16/02/2019 0 也许返回列表中的结果。使用上表,我希望得到以下结果: [[23/02/2019, 24/

我需要得到y列大于0的两个时段的最小和最大日期

数据帧:

Date          Y
25/02/2019    0
24/02/2019    1
23/02/2019    1
22/02/2019    0
21/02/2019    1
20/02/2019    1
19/02/2019    1
18/02/2019    0
17/02/2019    0
16/02/2019    0
也许返回列表中的结果。使用上表,我希望得到以下结果:

[[23/02/2019, 24/02/2019],[21/02/2019, 19/02/2019]]
结果如何返回并不重要。它正在吸引他们。我了解如果只有一个时段Y>0,如何获取最小和最大日期:

min(ua_dates['Date'])
max(ua_dates['Date'])

问题是,使用上表,我得到了2019年2月19日和2019年2月24日。可能存在某种类型的库?

您只需屏蔽数据:

 mask = ua_dates['Y'] > 0
 min(ua_dates[mask]['Date'])
 max(ua_dates[mask]['Date'])

IIUC您需要选择所有Y==1,然后如果它们不继续,您希望它们进入不同的组,这里我们使用
cumsum

ua_dates.loc[df.Y==1,'Date'].groupby(ua_dates.Y.eq(0).cumsum()).agg(['min','max']).values.tolist()
Out[713]: [['23/02/2019', '24/02/2019'], ['19/02/2019', '21/02/2019']]

顺便说一句,我把它包括在你所包含的格式中,但是如果你使用
df['thing\u I\u-want'].max()
而不是
max(df['thing\u-I\u-want'])
,你的代码会更快。检查你的输出?啊。我想我误解了周期在这个问题上的作用。你的回答更符合提问者的要求。你能澄清一下“y列大于0的两个时段的日期”是什么意思吗?这两个时段是如何定义的?您的意思是希望y大于0的日期的最小值和最大值以及y大于0的日期的最小值和最大值?我将期间定义为y大于0的连接在一起的任何日期。一段时间也可以是一天。