我将3组数据压缩在一起(日期,某个数字,价格)。我想遍历表,每当某数字小于列表中它之前的某数字时,我都希望提取发生这种情况的日期,某数字,价格。目前我只有:
for a,b,c in zip(date,somenumber,price):
print(a,b,c)
2018-01-30 18:42:00 859235 6.95
2018-02-01 09:08:00 323405 7.43
2018-02-02 15:16:00 528963 6.4
2018-02-05 18:48:00 808739 7.91
2018-02-07 14:42:00 462541 7.33
2018-02-10 18:48:00 598001 6.21
2018-02-11 03:32:00 650558 7.31
2018-02-11 11:28:00 670392 6.21
当某个数字从808739变为462541时,我想返回该较低数字的数据: 2018-02-07 14:42:00 462541 7.33
谢谢!
答案 0 :(得分:6)
这将比较somenumber + 1和somenumber,如果somenumber + 1(序列中的下一个数字小于当前数字),它将打印该行的所有数据。如果不小于2,则不会打印任何内容。
for a,b,c,d in zip(date, somenumber, somenumber[1:], price):
if c < b:
print(a, b, c, d)
答案 1 :(得分:2)
我从问题中了解到的是,每次somenumber
的值在下一行减小时,它应该打印该行。这很容易实现。只需将先前的值存储在另一个变量(prev_number
)中。不过,对于第一行,我们需要将prev_number
初始化为可能的最小数目。解决方法如下:
import sys
prev_number = -sys.maxint - 1 #initialize prev_number to lowest possible number in python
for a,b,c in zip(date,somenumber,price):
if b < prev_number:
print(a,b,c)
prev_number = d
让我知道它是否对您有用。