Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用panda生成excel的python_Python - Fatal编程技术网

用panda生成excel的python

用panda生成excel的python,python,Python,让我详细地告诉你我的问题。。。我有一个循环,它向我输出一个被识别的人的名字,如果该人出现在我的数据库中,否则它将不会被识别,如果它被识别,FOR循环将向我输出该名字,然后我希望该名字存储在excel工作表i-e数据框中,但它总是存储FOR循环在上一次迭代中给出的名字,它在以前的迭代中输出的所有其他名称都将丢失,它肯定是在一次又一次地重写,这是我的完整代码,请具体回答 from scipy.spatial import distance import csv import dlib import

让我详细地告诉你我的问题。。。我有一个循环,它向我输出一个被识别的人的名字,如果该人出现在我的数据库中,否则它将不会被识别,如果它被识别,FOR循环将向我输出该名字,然后我希望该名字存储在excel工作表i-e数据框中,但它总是存储FOR循环在上一次迭代中给出的名字,它在以前的迭代中输出的所有其他名称都将丢失,它肯定是在一次又一次地重写,这是我的完整代码,请具体回答

from scipy.spatial import distance
import csv
import dlib
import os
import numpy as np
import cv2
import pandas as pd
from skimage import  io
import face_recognition
from PIL import Image
with open("Data/train.csv","r") as facefeatures2:
    reader=csv.reader(facefeatures2)
    featureslist2=[]
    for row in reader:
        if len(row) != 0:
            featureslist2= featureslist2 +[row]

facefeatures2.close()
float_int2=[]
results=[]
for f2 in range(0,len(featureslist2)):
    float_int2 = float_int2 +[[float(str) for str in subarray] for subarray in [featureslist2[f2]]]
    csv2 = np.vstack(float_int2)
faces_folder_path = "Data/newcropped"
list = os.listdir(faces_folder_path) # dir is your directory path
number_files = len(list)
print (number_files)

writer = pd.ExcelWriter('pandas_name11.xlsx', engine='xlsxwriter')
for loop in range(0,number_files):
    print("iteration ="+str(loop+1))
    unknown_image = face_recognition.load_image_file(faces_folder_path + "/" + str(loop+1)+".jpg")
    cv2.imshow("test",unknown_image)
    cv2.waitKey(0)
    #### --------------exception handling-----------####
    try:
        unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

    except  IndexError:
        print("--->image is not detectable")
        pass
        # ...........................#
    results = face_recognition.compare_faces(csv2, unknown_face_encoding)
    chunks=[results[x:x + 12] for x in range(0, len(results),12)] # splits "results" list into sublists of size 12
    dirpath = "Data/eachperson"
    fname = []
    fname = [f for f in sorted(os.listdir(dirpath))]
    counter = 0
    index=0
    for c in range (0,len(chunks)):
        if 'True' in str(chunks[c]):
            counter=counter+1
            index=c
            df = pd.DataFrame({'names': [fname[index]]})
            df.to_excel(writer, sheet_name='Sheet1')
    if counter !=1 or counter ==0 :
           print("student is not present :(")
    else:
        print(str(fname[index])+" is present!!!")
writer.save()

可以找到一个类似的问题,并给出解决问题的答案

编辑:我将尝试扩展我的答案,但无法测试您的代码

df = pd.DataFrame({'names': [fname[index]]})
覆盖每个循环中的数据帧

df.to_excel(writer, sheet_name='Sheet1')
将要写入Excel的数据框存储在工作表1上。在下一次迭代中,您将覆盖此信息。Pandas的to_excel函数未追加

您可以尝试先将所有名称存储在列表中,然后转换为数据框,再转换为excel

names_present = []
for loop in range(0,number_files):
    print("iteration ="+str(loop+1))
    unknown_image = face_recognition.load_image_file(faces_folder_path + "/" + str(loop+1)+".jpg")
    cv2.imshow("test",unknown_image)
    cv2.waitKey(0)
    #### --------------exception handling-----------####
    try:
        unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

    except  IndexError:
        print("--->image is not detectable")
        pass
        # ...........................#
    results = face_recognition.compare_faces(csv2, unknown_face_encoding)
    chunks=[results[x:x + 12] for x in range(0, len(results),12)] # splits "results" list into sublists of size 12
    dirpath = "Data/eachperson"
    fname = []
    fname = [f for f in sorted(os.listdir(dirpath))]
    counter = 0
    index=0
    for c in range (0,len(chunks)):
        if 'True' in str(chunks[c]):
            counter=counter+1
            index=c
    if counter !=1 or counter ==0 :
           print("student is not present :(")
    else:
        print(str(fname[index])+" is present!!!")
        # Store all names present in list
        names_present.append(str(fname[index])
# Convert list to dataframe and safe
writer = pd.ExcelWriter('pandas_name11.xlsx', engine='xlsxwriter')
df = pd.DataFrame({'names': names_present})
df.to_excel(writer, sheet_name='Sheet1')
writer.save()

silvanoe的可能副本请立即回复我编辑的版本谢谢