Формирование массива numpy из данных treeview

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Win 7. Python 3.8
Пытаюсь передать данные из таблицы в массив. Применяю следующий код:
Python:
from tkinter import *
from tkinter import filedialog
from tkinter.ttk import Treeview, Combobox
import numpy as np
import seaborn as sns
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

class main_window:
    def __init__(self, master):
        self.main_win=master
        self.main_win.geometry("1024x728")
        self.main_win_menu=Menu(self.main_win)
        self.prj_menu=Menu(self.main_win_menu)
        self.prj_menu.add_command(label='Load wells', command=self.ld_wells)
        self.prj_menu.add_command(label='Load tops')
        self.prj_menu.add_command(label='Load grid')
        self.act_menu=Menu(self.main_win_menu)
        self.act_menu.add_command(label='Working chart', command=self.chart_build)
        self.act_menu.add_command(label='Statistics')
        self.act_menu.add_command(label='Create map')
        self.act_menu.add_command(label='Form dataset', command=self.form_arr)
        self.lst_map=Listbox(self.main_win)
        self.main_win_menu.add_cascade(label='Project', menu=self.prj_menu)
        self.main_win_menu.add_cascade(label='Action', menu=self.act_menu)
        self.main_win.config(menu=self.main_win_menu)
        self.main_win.title('Project')
        self.tbl_dataset=Treeview(self.main_win)
        self.tbl_dataset.place(x=5, y=5)
        self.main_win.mainloop()
    
    def ld_wells(self):
        row_count=0
        self.path_to_file=filedialog.askopenfilename()
        with open(self.path_to_file, 'r') as self.f_well:
            self.columns=next(self.f_well).split('\t')
            self.tbl_dataset["columns"]=self.columns
            for i, txt in enumerate(self.columns):
                self.tbl_dataset.heading(i, text=txt)
            for row in self.f_well:
                self.tbl_dataset.insert("", END, values=row.split('\t'))
                row_count+=1
        self.tbl_dataset['show']='headings'
        self.well_counts=Label(self.main_win)
        self.well_counts.place(x=5, y=240, width=100, height=25)
        self.well_counts.config(text=row_count, relief='sunken')
        self.factor_count=Label(self.main_win)
        self.factor_count.place(x=110, y=240, width=100, height=25)
        self.factor_count.config(text=len(self.columns), relief='sunken')
    
    def chart_build(self):
        work_win(self.tbl_dataset)
    
    def form_arr(self):
        self.dts=np.array(np.zeros((self.well_counts['text'], self.factor_count['text'])))
        i=1
        while i<=self.well_counts['text']:
            j=0
            while j<len(self.columns):
                if i>=100:
                    self.dts[i,j]=self.tbl_dataset.item('I'+str(i)).get('values')[j]
                elif i>=10:
                    self.dts[i,j]=self.tbl_dataset.item('I0'+str(i)).get('values')[j]
                else:
                    self.dts[i,j]=self.tbl_dataset.item('I00'+str(i)).get('values')[j]   
                j+=1
            i+=1
        print(self.dts)

Здесь:
self.well_counts['text'] - элемент, в котором указано число строк. Для теста 366.
len(self.columns) - длина списка, в котором перечислены имена столбцов. Для теста 3
На 170 строке, не кода, а данных, получаю ошибку, что она не найдена. Можете пояснить почему?
Пример данных приложил.
 

Вложения

  • data_input.txt
    9,9 КБ · Просмотры: 2
Последнее редактирование:

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Актуально
 

Форум IT Специалистов