Python : populate a new column with an if/else statement -


i have csv file composed of 3 column.

my goal add fourth column , populate statement based on columns n°2 , n°3.

here beginning of code :

import csv, sys, locale, operator  abord = "/home/julien/csv/abord.csv" file1 = open (abord, 'rb') reader1 = csv.reader (file1, delimiter = ';', quotechar=' ')  next(reader1)  row1 in reader1:     id = row1 [0]     larg_1 = row1 [1]     larg_2 = row1 [2] 

and want make things :

if larg_1 > 10 , larg_2 <20:     print "result ok" in fourth column "control" else:     print "result fail" in fourth column "control"  save csv, nom composed of 4 columns 

do know how ? thank !

you have write file (using csv.writer)

sourcepath = "/home/julien/csv/abord.csv" destpath =  "/home/julien/csv/abord-fixed.csv"  open(sourcepath, "rb") source, open(destpath, "wb") dest:     # xxx sure want quotechar ???     reader = csv.reader(source, delimiter = ';', quotechar=' ')     writer = csv.writer(dest,  delimiter = ';', quotechar=' ')      # first copy (augmented) headers     headers = reader.next()     headers.append("control")     writer.writerow(headers)      # let's loop on content     rownum, row in enumerate(reader):         # need convert data int                      # adding proper error handling here might help...         # status = "result ok" if (int(row[1]) > 10 , int(row[2]) < 20) else "result fail"         try:             l1 = int(row[1])             l2 = int(row[2])         except (typeerror, valueerror), e:             err = "non integer value l1 , or l2 in row %s line %s - got : %s" % (                 rownum, reader.linenum, row                 )             print >> sys.stderr, err             result = "invalid values"         else:             if l1 > 10 , l2 < 20:                 result = "result ok"             elif rownum == 42: # stupid value if/elif/else exemple                 result = "what's question ?"             else:                 result = "result fail"          row.append(result)         writer.writerow(row) 

if needed can delete source file , rename new one.


Comments