2016-04-21 112 views
1

如何将一行与CSV文件中的上一行进行比较?如何将行与CSV中的前一行进行比较?

我需要为我的if条件:

if row[0] != row[0][of previous row]: 
    do something.... 
+1

欢迎来到SO,请向我们展示您尝试过的代码,包括阅读文件中行的部分。如果你还没有这样做,我建议你阅读https://docs.python.org/2/library/csv.html –

+0

在你的循环中,在循环结尾创建'previous = row'。 –

+0

该文件的第一行没有前一行会发生什么? – martineau

回答

0

大熊猫是与CSV的工作一个很好的工具。在这种情况下,如果你正在比较整数,你可以使用diff()。当行相同时diff()将等于0.这可以应用于整个数据帧,如df.diff()或特定系列(列)df.column_name.diff()df['column_name'].diff()。您甚至可以获取列之间的差异或更改周期以计算差异,请查阅文档here

+0

感谢您的信息,我必须检查它:) – MTG

1

这个程序做你想要什么:

import csv 

f = open("some.csv", "r+") 
ff = csv.reader(f) 

pre_line = ff.next() 
while(True): 
    try: 
     cur_line = ff.next() 
     if pre_line == cur_line: 
      pass #replace pass with do_something() 
     pre_line = cur_line 
    except: 
     break 

正如你看到的上面,我挂绕在CSV文件中的行,并检查以往使用和迭代的每行。如果他们是平等的,我称do_something()方法,如果他们不相等,它只是去下一行。

+0

ff.next()是什么?感谢提示,我在脑海中建立我如何重建我的脚本:) – MTG

+0

@MTG'ff'就像csv中的行列表。 'ff.next()'每次调用它时会返回一行,直到您收到最后一行。在Python中,我们调用ff迭代变量,next()是迭代器。谷歌“迭代器是python”。 – EbraHim

+0

不工作....是否有可能,这不适用于3.5? – MTG

相关问题