2016-04-21 137 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

相關問題