我需要获取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'])
问题是使用上面的表格,这给了我19/02/2019和24/02/2019。也许那里有某种图书馆?
答案 0 :(得分:2)
IIUC,您需要选择所有Y == 1 out,然后,如果它们不继续,则要将它们分成不同的组,这里我们使用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']]
答案 1 :(得分:1)
您只需要屏蔽数据:
mask = ua_dates['Y'] > 0
min(ua_dates[mask]['Date'])
max(ua_dates[mask]['Date'])