0

I am trying to append 2 data sets to my csv file. Below is my code. The code runs but my data gets appended below a set of data in the first column (i.e. col[0]). I would however like to append my data sets in separate columns at the end of file. Could I please get advice on how I might be able to do this? Thanks.

import csv

Trial = open ('Trial_test.csv', 'rt', newline = '')
reader = csv.reader(Trial)

Trial_New = open ('Trial_test.csv', 'a', newline = '')
writer = csv.writer(Trial_New, delimiter = ',')

Cortex = []
Liver = []

for col in reader:
    Cortex_Diff = float(col[14])
    Liver_Diff = float(col[17])
    Cortex.append(Cortex_Diff)
    Liver.append(Liver_Diff)
Avg_diff_Cortex = sum(Cortex)/len(Cortex)
Data1 = str(Avg_diff_Cortex)
Avg_diff_Liver = sum(Liver)/len(Liver)
Data2 = str(Avg_diff_Liver)
writer.writerows(Data1 + Data2)


Trial.close()
Trial_New.close()
user3302763
  • 101
  • 4
  • 10
  • From all rows of one input file, this script calculates two values. How do you want those to be appended both as separate columns and also at the end of the file? By "end" do you mean right edge? But there are just two values compared to `len(Cortex)` lines in the original file... Definitely don't read and write to the same file name. – beroe Mar 01 '14 at 09:45

1 Answers1

0

I think I see what you are trying to do. I won't try to rewrite your function entirely for you, but here's a tip: assuming you are dealing with a manageable size of dataset, try reading your entire CSV into memory as a list of lists (or list of tuples), then perform your calculations on the values on this object, then write the python object back out to the new CSV in a separate block of code. You may find this article or this one of use. Naturally the official documentation should be helpful too.

Also, I would suggest using different files for input and output to make your life easier.

For example:

import csv
data = []
with open('Trial_test.csv', 'rb') as csvfile:
   reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
   for row in reader:
       data.append(row)

# now do your calculations on the 'data' object.

with open('Trial_test_new.csv', 'wb') as csvfile:
   writer = csv.writer(csvfile, delimiter=' ', quotechar='|')
   for row in data:
       writer.writerow(row)

Something like that, anyway!

Community
  • 1
  • 1
Dawngerpony
  • 3,288
  • 2
  • 34
  • 32