从特定行向下搜索csv

时间:2012-03-06 04:41:13

标签: python csv

这是对this question

的跟进

我正在使用的代码是:

import csv

file1reader = csv.reader(open("file1.csv"), delimiter=",")
file2reader = csv.reader(open("file2.csv"), delimiter=",")

header1 = file1reader.next() #header
header2 = file2reader.next() #header

for Code, DTime in file1reader:
    for id_, D, Sym, DateTime, Bid, Ask in file2reader:
        if DateTime.startswith(DTime):            # found it
            print id_, Code, DateTime, Bid, Ask   # output data
            break                                 # break and continue where we left next time

示例结果:

1375023013 1 2010-12-26 17:01:01 1.311200 1.311500
1375023592 2 2010-12-26 17:07:16 1.311700 1.312000
1375024176 2 2010-12-26 17:15:04 1.311300 1.311600

对于这些结果中的每一行,我想在file2.csv中搜索id_值,并从该行向下搜索列Bid,其值为> = Bid + 0.0010 OR< = Bid- 0.0015。基本上,从那个条目开始,首先是什么价格?出价+ 0.0010或出价-0.0015?我需要使用> =& < =因为价格不连续。找到该条目后,我想通过为找到的DateTime和Bid添加一列来追加原始结果。

预期结果:

id_      Code     DateTime       Bid      Ask      NextDateTime        NextBid      
1375023013 1 2010-12-26 17:01:01 1.311200 1.311500 2010-12-26 17:03:02 1.312200
1375023592 2 2010-12-26 17:07:16 1.311700 1.312000 2010-12-26 17:09:03 1.311100
1375024176 2 2010-12-26 17:15:04 1.311300 1.311600 2010-12-26 17:20:02 1.312400

再次感谢

1 个答案:

答案 0 :(得分:3)

要“从特定行向下搜索csv”,请尝试使用itertools.dropwhile

要“通过添加列附加原始结果”,您需要使用新数据重写该文件。当 inplace 设置为true时,fileinput module可以轻松完成。