Проблема с созданием заголовка и сортировкой данных в Python - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю файл, который вводит оценки и имена, но у меня есть две проблемы: я не могу определить заголовок для данных, и когда я сортирую свою таблицу, она сортируется как списки, но я хотел бы отобразить ее как таблица: вот мой код когда я пытаюсь сохранить его, он сохраняет только первый ряд моей таблицы. Как я могу сохранить все отсортированные таблицы в CSV?

import csv
import operator
import pandas as pd


with open('Grade_list.csv', 'w', newline='') as stdFile:
    writer = csv.writer(stdFile)
    writer.writerow(["Last Name", "First Name", "Grade"])
    writer.writerow(["Potter", "Harry",6.5])
    writer.writerow(["Granger", "Hermione",11])
    writer.writerow(["Weasley", "Ron",6])


action = input("Would you like to read, write, or sort data in this file?")

if action == "read":
    fileObj = open("Grade_list.csv","r")
    print(fileObj.read())


elif action == "write": 
  nbStudents= float(input("How Many Student Records would you like to add? "))
  i = 0
  while i<nbStudents:
      with open('Grade_list.csv', 'a', newline='') as stdFile:
        writer=csv.writer(stdFile)
        writer.writerow([input("Please Provide the Last Name of the student: "), input("Please Provide the First Name of the student : "), float(input("Please Provide Grade of the student: "))])
        i = i+1


elif action =="sort":
  fileObj = open("Grade_list.csv","r")
  action2= input("Would you like to sort the data based on Last Names or Grades? ")
  if action2=="names":
    df = pd.read_csv('Grade_list.csv')
    df = df.sort_values(by=['Last Name'])
    print(df)

  elif action2=="grades":
    df = pd.read_csv('Grade_list.csv')
    df = df.sort_values(by=['Grade'], ascending=False)
    print(df)
    savingFile= input("Would you like to save the sorted list?")
    if savingFile=="yes":
      savingAction=input("Would you like to save your sorted list as a new file, or would you like to overwrite the exisiting file? Answer new to save in a new file, and overwrite to save your sorted file in the exisitng list ")
      if savingAction=="new":
        with open('Grade_list2.csv', 'w', newline='') as stdFile2:
          writer=csv.writer(stdFile2)
          writer.writerow(df)
      elif savingAction=="overwrite":
        with open('Grade_list.csv', 'w', newline='') as stdFile:
          writer=csv.writer(stdFile)
          writer.writerow(df)

    elif savingFile=="no":
      print("OK, Bye!")    

1 Ответ

0 голосов
/ 16 апреля 2020

Если вы хотите отобразить его в виде таблицы, тогда pandas - ваш лучший вариант.

import pandas as pd

, а затем замените ваш код для сортировки и отображения на следующее:

  if action2=="names":
    df = pd.read_csv('Grade_list.csv')
    df = df.sort_values(by=['Last Name'])
    print(df)

Вывод:

Would you like to sort the data based on Last Names or Grades? names
  Last Name First Name  Grade
1   Granger   Hermione   11.0
0    Potter      Harry    6.5
2   Weasley        Ron    6.0

Посмотрите библиотеку Pandas, она вам понравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...