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