以负数输出时间距离以创建序列

一个项目需要一点帮助。


我有两个列表,每个列表包含 4 个或更多特定周 - True_SH:


[Timestamp('2012-01-08 00:00:00'), Timestamp('2012-04-22 00:00:00'), Timestamp('2012-08-19 00:00:00'), Timestamp('2012-10-07 00:00:00')

真_SL:


[Timestamp('2011-11-20 00:00:00'), Timestamp('2012-03-25 00:00:00'), Timestamp('2012-05-13 00:00:00'), Timestamp('2012-09-02 00:00:00')

它们交替出现,并且不可能一个接一个地有两个 SL 或 SH,在本例中:


SL->SH->SL->SH->SL->SH->SL->SH

如何使用以下规则输出第三个列表中日期之间的周数距离 - 从 SL 到 SH 的距离产生正数,而从 SH 到 SL 的距离输出负数周数?该数字应包括计数中的开始周和结束周。


在此示例中,前两个的距离:(1st)SL('2011-11-20 00:00:00') 到 (2nd) SH('2012-01-08 00:00:00') 输出正 7,- > 从 2nd(SH) 到 (3rd) SL('2012-03-25 00:00:00') 的距离输出 NEGATIVE -10 ,然后从 3rd(SL) 到 4th(SH) 再次输出一个正数,然后从SH 到 SL 负等。


我需要这个列表来进一步分析是否有重复序列。


真的希望任何人都可以帮助我,因为我正在努力寻找一种方法来做到这一点。


qq_遁去的一_1
浏览 142回答 1
1回答

呼如林

我的方法是合并两个数组,对合并后的数组进行排序,然后遍历合并后的数组以计算相邻日期之间的周数。然后,您可以测试两个相邻日期中较大的一个,以查看它来自哪个原始列表,如果它来自 true_sl 列表,则返回一个负值。请注意,我对合并列表进行排序的选择假定 true_sh 和 true_sl 列表中的日期将始终交错。这是代码:from datetime import datetimetrue_sh = [datetime(2012, 1, 8), datetime(2012, 4, 22), datetime(2012, 8, 19), datetime(2012, 10, 7)]true_sl = [datetime(2011, 11, 20), datetime(2012, 3, 25), datetime(2012, 5, 13), datetime(2012, 9, 2)]out_array = true_shout_array.extend(true_sl)out_array.sort()for i, elem in enumerate(out_array):    if i == 0:        continue    num_days = elem - out_array[i - 1]    num_weeks = num_days.days // 7    if elem in true_sl:        num_weeks = -num_weeks    print(num_weeks)这是输出:7-114-314-25另请注意,您将预期的第二个输出指定为 -10,但 2012 年 1 月 8 日和 2012 年 3 月 25 日之间有 77 天,因此我认为 -11 的输出是正确的。请你确认一下好吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python