当前位置: 首页 > 知识库问答 >
问题:

使用熊猫访问csv文件时出现KeyError

南门飞扬
2023-03-14

我已经使用pandas成功创建了一个csv文件。我得到以下错误:

Traceback(最近一次调用最后一次):文件"C:\用户\Manoj Kumar\PycharmProjects\trex\venv\lib\site-包\熊猫\core\索引\base.py",第3078行,get_loc返回自己。_engine.get_loc(键)文件"pandas_libs\index.pyx",第140行,在熊猫中。_libs.index.IndexEngine.get_locFile"pandas_libs\index.pyx",第162行,在熊猫中。_libs.index.IndexEngine.get_loc文件pandas_libs\hashtable_class_helper.pxi,第1492行,在熊猫中。_libs.hashtable.PyObjectHashTable.get_item文件pandas_libs\hashtable_class_helper.pxi,第1500行,在熊猫中。_libs.hashtable.PyObjectHashTable.get_item关键错误:'ID'

在处理上述异常时,发生了另一个异常:

回溯(最近一次调用):文件“C:\Users\Manoj Kumar\AppData\Local\Programs\Python\Python37\lib\tkinter\uuuuuu init\uuuuuuuu.py”,第1702行,在调用返回self中。func(*args)文件“C:/Users/Manoj Kumar/PycharmProjects/trex/基于面部识别的考勤管理-Copy/train.py”,第206行,在TrackImages aa=df中。iloc[df['Id']==Id]['Name']。getitem return self中的值文件“C:\Users\Manoj Kumar\PycharmProjects\trex\venv\lib\site packages\pandas\core\frame.py”,第2688行_getitem_列(键)文件“C:\Users\Manoj Kumar\PycharmProjects\trex\venv\lib\site packages\pandas\core\frame.py”,第2695行,在_getitem_列返回self_获取项目缓存(密钥)文件“C:\Users\Manoj Kumar\PycharmProjects\trex\venv\lib\site packages\pandas\core\generic.py”,第2489行,在获取项目缓存值=self中_数据获取(项目)文件“C:\Users\Manoj Kumar\PycharmProjects\trex\venv\lib\site packages\pandas\core\internals.py”,第4115行,在get loc=self中。项目。获取第3080行“C:\Users\Manoj Kumar\PycharmProjects\trex\venv\lib\site packages\pandas\core\indexes\base.py”中的位置(项目)文件_发动机获取pandas中第140行的loc(self.\u可能\u cast\u indexer(key))文件“pandas\u libs\index.pyx”_图书馆。指数IndexEngine。获取pandas中第162行的文件“pandas\u libs\index.pyx”_图书馆。指数IndexEngine。在pandas中获取第1492行的文件“pandas\u libs\hashtable\u class\u helper.pxi”_图书馆。哈希表。PyObjectHashTable。获取pandas中第1500行的项目文件“pandas\u libs\hashtable\u class\u helper.pxi”_图书馆。哈希表。PyObjectHashTable。获取项目密钥错误:“Id”

尝试从代码访问csv文件时。代码是:

    recognizer = cv2.face.EigenFaceRecognizer_create()  # cv2.createLBPHFaceRecognizer()
    recognizer.read("TrainingImageLabel\Trainner.yml")
    harcascadePath = "haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(harcascadePath);
    df = pd.read_csv("StudentDetails\StudentDetails.csv")
    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    col_names = ['Id', 'Name', 'Date', 'Time']
    attendance = pd.DataFrame(columns=col_names)
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.2, 5)
        if np.all(np.array(np.array(faces).shape)) and faces is not None:
            for (x, y, w, h) in faces:
                cv2.rectangle(im, (x, y), (x + w, y + h), (225, 0, 0), 2)
                gray = gray[y:y + h, x:x + w]
                gray = cv2.resize(gray, (100, 100))
                Id, conf = recognizer.predict(gray)
                print(Id, conf)
                if (conf < 2000):
                    ts = time.time()
                    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
                    aa = df.loc[df['Id'] == Id]['Name'].values
                    tt = str(Id) + "-" + aa
                    attendance.loc[len(attendance)] = [Id, aa, date, timeStamp]
                else:
                    Id = 'Unknown'
                    tt = str(Id)
                if (conf > 2000):
                    noOfFile = len(os.listdir("ImagesUnknown")) + 1
                    cv2.imwrite("ImagesUnknown\Image" + str(noOfFile) + ".jpg", im[y:y + h, x:x + w])
                cv2.putText(im, str(tt), (x, y + h), font, 1, (255, 255, 255), 2)
        attendance = attendance.drop_duplicates(subset=['Id'], keep='first')
        cv2.imshow('im', im)
        if (cv2.waitKey(1) == ord('q')):
            break
    ts = time.time()
    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
    Hour, Minute, Second = timeStamp.split(":")
    fileName = "Attendance\Attendance_" + date + "_" + Hour + "-" + Minute + "-" + Second + ".csv"
    attendance.to_csv(fileName, index=False)
    cam.release()
    cv2.destroyAllWindows()
    # print(attendance)
    res = attendance
    message2.configure(text=res)```

The objective of the code is to recognize faces.

共有1个答案

洪鸿博
2023-03-14

似乎你在这一行失败了:

aa = df.loc[df['Id'] == Id]['Name'].values

这可能是因为csv不包含名为“Id”的列。

请检查一下!(:

 类似资料:
  • 出于某种原因,熊猫在查看某些文件时会抛出错误。csv股票数据我有。以下是错误: Traceback(最近一次调用最后一次):文件"/usr/local/lib/python3.7/site-pack/熊猫/core/index/base.py",第3078行,get_loc返回自己。_engine.get_loc(键)文件"熊猫/_libs/index.pyx",第140行,在熊猫中。_libs.

  • 问题内容: 这个问题已经在这里有了答案 : Python中的Windows路径 (5个答案) 4年前关闭。 追溯(最近一次通话): 产品中的文件“”,第1行= pd.read_csv(’C:\ amazon_baby.csv’) 在parser_f中的第562行的文件“ C:\ Users \ kvsn \ Anaconda3 \ lib \ site-packages \ pandas \ io

  • 我试图加载一个csv文件内基于熊猫的数据帧。我使用了以下导入。 没有找到文件是抛出错误,回溯如下: ()中的FileNotFoundError回溯(最近一次调用)---- c:\users\saish\appdata\local\programs\python\python35-32\lib\site packages\pandas\io\parsers。语法分析器中的py\u f(文件路径或缓冲

  • 我有一个CSV文件,我想在我的弹性搜索中导入它。 我用的是Windows 10,我也有一个Kibana,可以在导入后浏览数据。我使用Logstash来尝试导入。 我的所有服务(Kibana、es和Logstash)都在我的本地主机上运行。 我尝试使用以下Logstash配置文件(我的csv文件在正确的路径中): 如您所见,我试图使用“csv”或“grok”过滤器。 然后,我在详细模式下使用以下配置

  • 用熊猫打开德国csv文件的最佳方式是什么? 我有一个包含以下列的德语csv文件: 基准:格式为“DD.MM”的日期。YYYY' Umlaute:带有德语特有字符的德语名称 扎伦:格式为“000.000,00”的数字 我的预期产出是: 下面提供了示例数据(见文件)。 这将引发一个: 这不会引发错误,但与我期望的输出相差甚远: 日期是字符串,而不是日期时间 现在,我有四行代码,但仍然不起作用。最后一行

  • 问题内容: 一个新手。有人可以告诉我为什么在某些情况下在以下函数中的路径名之前使用“ r”吗? 提前致谢 问题答案: 在Python中,反斜杠用于表示特殊字符。 例如,-表示换行符。尝试打印。 Windows上的路径名称中往往带有反斜杠。但是我们希望它们表示实际的反斜杠,而不是特殊字符。 r代表“原始”,将导致字符串中的反斜杠被解释为实际的反斜杠,而不是特殊字符。 例如字面意思是字符。再次尝试打印