我正在用一个界面编写一些脚本,我遇到了一些性能非常差的问题
我想为每一列(129)创建多个条目,列应该是7。为此,我创建了一个字典,因此使用动态变量名创建了空条目
对于这些空条目,我希望根据特定单元格(国家/地区)中提供的内容插入文本
任务已经完成,但是,加载数据需要花费大量的时间,我不知道可以做些什么来加快加载速度。。我不能让它这么慢,尤其是在项目的这个阶段
从提取文件获取信息的函数:
def Load_Neighborhood_Details(self, inx, what_return):
file_path = r'C:\Users\krzysztof-wirkus\Desktop\Od nowa\extracts\neighborhood_details.csv'
file = pd.read_csv(file_path, encoding = "ISO-8859-1")
country = file[file['Country Name'] == self.p0.country_input.get()]
location = country[country['Location Name'] == self.p0.location_input.get()].iloc[inx]
neighborhood_name = location['Neighborhood Name']
dwelling = location['Dwelling']
furniture = location['Furnished Unfurnished Indicator']
item_cost_category = location['Item Cost Category Name']
neigh_class = location['Class']
try:
start_date = location['Start Date'].split()[0]
except:
start_date = ""
try:
end_date = location['End Date'].split()[0]
except:
end_date = ""
if what_return == "neighborhood_name":
return neighborhood_name
elif what_return == "dwelling":
return dwelling
elif what_return == "furniture":
return furniture
elif what_return == "item_cost_category":
return item_cost_category
elif what_return == "neigh_class":
return neigh_class
elif what_return == "start_date":
return start_date
elif what_return == "end_date":
return end_date
我糟糕的性能循环:
for i in range(2, 131):
self.p3.dict['neighborhood_details_name_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "neighborhood_name"))
self.p3.dict['neighborhood_details_dwelling_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "dwelling"))
self.p3.dict['neighborhood_details_furniture_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "furniture"))
self.p3.dict['neighborhood_details_item_cost_category_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "item_cost_category"))
self.p3.dict['neighborhood_details_class_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "neigh_class"))
self.p3.dict['neighborhood_details_start_date_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "start_date"))
self.p3.dict['neighborhood_details_end_date_entry_' + str(i)].insert(tk.END, self.Load_Neighborhood_Details(i-2, "end_date"))
我不确定,但问题可能是您继续打开csv文件。 尝试改变
与:
然后:
(注意传递给函数Load\u neighborary\u Details()的文件对象)
我希望它能帮上忙
您的代码的性能非常差,因为您要多次打开csv文件,您应该只打开一次(如果可能)并将其作为函数的参数传递,这将有助于提高性能
相关问题 更多 >
编程相关推荐