Итак, я работал над своим кодом python, чтобы создать простую базу данных студентов и университетов, в которых они учатся, используя классы и библиотеку pandas. Это выглядит так -
- Я пытаюсь создать базу данных, в которой пользователь может вводить данные своего колледжа, включая курсы, в уже созданный файл csv (отлично работает)
- Я пытаюсь добавить функцию для удаления всей строки деталей (идентификатор, название колледжа, курс колледжа, город колледжа, сборы и пин-код), когда пользователь вводит идентификатор колледжа из файла csv.
<code>import pandas as pd
import csv
from csv import writer
def append_list_as_row(file_name, list_of_elem):
# Open file in append mode
with open(file_name, 'a+', newline='') as write_obj:
# Create a writer object from csv module
csv_writer = writer(write_obj)
# Add contents of list as last row in the csv file
csv_writer.writerow(list_of_elem)
class College:
def __init__(self, collegeId, collegeName, courseType, city, fees, pinCode):
self.collegeId = collegeId
self.collegeName = collegeName
self.courseType = courseType
self.city = city
self.fees = fees
self.pinCode = pinCode
#The @classmethod decorator exists so you can create class methods that are passed to the actual class object within the function call
@classmethod
def student(self):
collegeId = str(input("Enter college ID: "))
collegeName = str(input("Enter college's name: "))
courseType = str(input("Enter course: "))
city = str(input("Enter city: "))
fees = str(input("Enter fees: "))
pinCode = str(input("Enter pincode: "))
cond = str(input("Would you like to delete any entry? Type Yes or No: "))
if cond in ['yes', 'Yes', 'YES', 'Y', 'y']:
df = pd.read_csv('colleges.csv')
df = df.dropna(how = 'all') #filtering rows that don't have any data
df = df.set_index('identity')
delete_row = input("please enter the id of the college whose data needs to be deleted: ")
df.drop(df[df['identity'] == delete_row].index, inplace = True)
elif cond in ['no', 'No', 'NO', 'N', 'n']:
row_contents = [] #empty list initiation
row_contents.append(collegeId)
row_contents.append(collegeName)
row_contents.append(courseType)
row_contents.append(city)
row_contents.append(fees)
row_contents.append(pinCode)
append_list_as_row('colleges.csv', row_contents)
else:
print("invalid entry. Please reply with a Yes or No.")
return self(collegeId, collegeName, courseType, city, fees, pinCode)
data = College.student()
print(data)
В строке 36 я получаю сообщение об ошибке -
KeyError: 'identity'
Требуется небольшая поддержка при удалении части строки, потому что я застрял на несколько часов. Я новичок ie.
Также вот формат файла csv -
Identity, cname, course, city, fees, pincode