【发布时间】:2021-09-16 21:50:56
【问题描述】:
我想删除重复的记录,但错误一直显示代码在另一个函数中工作但在这里不起作用,我找不到任何解决方案 'list' object has no attribute 'drop_duplicates' 这个错误 错误是:attendance = admission.drop_duplicates(subset="Id", keep='first') AttributeError: 'list' 对象没有属性 'drop_duplicates'
def TrackImages():
check_haarcascadefile()
assure_path_exists("Attendance/")
assure_path_exists("StudentDetails/")
for k in tb.get_children():
tb.delete(k)
msg = ''
i = 0
j = 0
recognizer =cv2.face.LBPHFaceRecognizer_create()
exists3 = os.path.isfile("Pass_Train\Trainner.yml")
if exists3:
recognizer.read("Pass_Train\Trainner.yml")
else:
mess._show(title='Data Missing', message='Please click on Save Profile to reset data!!')
return
harcascadePath = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(harcascadePath);
cam = cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
col_names = ['Id', '', 'Name', '', 'Date', '', 'Time']
attendance = pd.DataFrame(columns=col_names)
exists1 = os.path.isfile("StudentDetails\StudentDetails.csv")
if exists1:
df = pd.read_csv("StudentDetails\StudentDetails.csv")
else:
mess._show(title='Details Missing', message='Students details are missing, please check!')
cam.release()
cv2.destroyAllWindows()
window.destroy()
while True:
ret, im = cam.read()
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(gray, 1.2, 5)
for (x, y, w, h) in faces:
cv2.rectangle(im, (x, y), (x + w, y + h), (255, 0, 0), 2)
serial, conf = recognizer.predict(gray[y:y + h, x:x + w])
if (conf < 50):
ts = time.time()
date = datetime.datetime.fromtimestamp(ts).strftime('%d-%m-%Y')
timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
aa = df.loc[df['SERIAL NO.'] == serial]['NAME'].values
ID = df.loc[df['SERIAL NO.'] == serial]['ID'].values
ID = str(ID)
ID = ID[1:-1]
bb = str(aa)
bb = bb[2:-2]
confstr = " {0}%".format(round(100 - conf))
attendance = [str(ID), '', bb, '', str(date), '', str(timeStamp)]
else:
Id = 'Unknown'
bb = str(Id)
confstr = " {0}%".format(round(100 - conf))
cv2.putText(im, str(bb), (x, y + h), font, 1, (0, 251, 255), 2)
cv2.putText(im, str(confstr), (x-10, y + h + 30), font, 1, (0, 251, 255), 2)
attendance = attendance.drop_duplicates(subset="Id", keep='first')
cv2.imshow('Taking Attendance', im)
if (cv2.waitKey(1) == ord('q')):
break
print(attendance)
ts = time.time()
date = datetime.datetime.fromtimestamp(ts).strftime('%d-%m-%Y')
exists = os.path.isfile("Attendance\Attendance_" + date + ".csv")
if exists:
with open("Attendance\Attendance_" + date + ".csv", 'a+') as csvFile1:
writer = csv.writer(csvFile1)
writer.writerow(attendance)
csvFile1.close()
else:
with open("Attendance\Attendance_" + date + ".csv", 'a+') as csvFile1:
writer = csv.writer(csvFile1)
writer.writerow(col_names)
writer.writerow(attendance)
csvFile1.close()
with open("Attendance\Attendance_" + date + ".csv", 'r') as csvFile1:
reader1 = csv.reader(csvFile1)
for lines in reader1:
i = i + 1
if (i > 1):
if (i % 2 != 0):
iidd = str(lines[0]) + ' '
tb.insert('', 0, text=iidd, values=(str(lines[2]), str(lines[4]), str(lines[6])))
csvFile1.close()
cam.release()
cv2.destroyAllWindows()
【问题讨论】:
标签: python excel pandas duplicates