how can I write my function output on CSV file - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: how can I write my function output on CSV file (/thread-17993.html) Pages:
1
2
|
how can I write my function output on CSV file - go127a - May-02-2019 how can I update CSV file ? I have a list of name as a csv file, I read it and calculate the mean of them. finally I am going to add (name, mean) to the first csv file. RE: how can I write my function output on CSV file - buran - May-02-2019 check csv module https://docs.python.org/3/library/csv.html RE: how can I write my function output on CSV file - go127a - May-02-2019 here is my csv code: Quote:mandana,5,7,3,15 and I am going to calculate the mean of every list in csv and add the name and mean to the csv file. import csv from statistics import mean import csv from statistics import mean with open ('grades.csv', 'r') as input_file_name: reader=csv.reader(input_file_name) lastrow=[] for row in reader: #print (row) name = row[0] these_grades=list() for grade in row[1:]: #print(grade) these_grades.append(int(grade)) #print(name,grade,these_grades) print(name, mean(these_grades)) with open('grades.csv', 'w', newline='') as output_file_name: writer = csv.writer(output_file_name) writer.writerows(name ) writer.writerows(mean ) RE: how can I write my function output on CSV file - buran - May-02-2019 because you want to overwrite the same file (is it a good idea?) you need to read the data from input file, calculate mean, store data in some data structure in memory and after you process all data - write to a file with same name. import csv from statistics import mean with open ('grades.csv', 'r') as input_file: reader=csv.reader(input_file) data = [] for row in reader: name = row[0] grades=[int(num) for num in row[1:]] # alternatively use: grades = map(int, row[1:]) row.append(mean(grades)) # alternatively use: row.append(f'{mean(grades):.2f}') data.append(row) with open('grades.csv', 'w', newline='') as output_file_name: writer = csv.writer(output_file_name) writer.writerows(data) RE: how can I write my function output on CSV file - go127a - May-02-2019 thanks for your answer. how can I update csv file with mean output results in new line. actually the correct output result would be as below: Quote:mandana,7.5 so i replaced the 11 line with below line: row.append(float(mean(grades))) RE: how can I write my function output on CSV file - buran - May-02-2019 change lines 9-10 - instead of appending to row, just append to data new list with just name an mean RE: how can I write my function output on CSV file - go127a - May-02-2019 I dont get your point! can you explain more on the code? and one more question, how can I make a dictionary from the name and the mean output. name:keys and the mean:values RE: how can I write my function output on CSV file - buran - May-02-2019 on line 9 I add mean to existing row - you don't need this you need to create a list with two elements - name from row and mean then append this new list to data RE: how can I write my function output on CSV file - go127a - May-02-2019 so you mean that I make a new row instead of appending the existing one with the new list? the new list should be contain a name and mean? import csv from statistics import mean with open ('grades.csv', 'r') as input_file: reader=csv.reader(input_file) data = [] l2=[] for row in reader: name = row[0] grades=[int(num) for num in row[1:]] # alternatively use: grades = map(int, row[1:]) l2.append(name) l2.append(float(mean(grades))) data.append(l2) with open('grades.csv', 'w', newline='') as output_file_name: writer = csv.writer(output_file_name) writer.writerows(data)the output repeat the result for every line ! RE: how can I write my function output on CSV file - buran - May-02-2019 you need to reset l2 for every row import csv from statistics import mean with open ('grades.csv', 'r') as input_file: reader=csv.reader(input_file) data = [] for row in reader: l2 = [] name = row[0] grades=[int(num) for num in row[1:]] # alternatively use: grades = map(int, row[1:]) l2.append(name) l2.append(float(mean(grades))) data.append(l2) # or just as a single line # data.append([row[0], float(mean(grades))]) with open('grades.csv', 'w', newline='') as output_file_name: writer = csv.writer(output_file_name) writer.writerows(data) |