【问题标题】:in python project drop_duplicates() function not working in pandas?python 项目中的 drop_duplicates() 函数在 pandas 中不起作用?
【发布时间】: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


    【解决方案1】:

    List 对象没有drop_duplicate 属性。 因此,您可以先将attendance 转换为pd.DataFrame,然后再应用drop_duplicate

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 2022-11-03
      • 2020-08-18
      • 2018-08-14
      • 2020-11-28
      相关资源
      最近更新 更多