Поскольку я очень плохо знаком с Python, у меня возникла проблема при попытке добавить выбранный элемент благодаря комбинированному списку внутри массива. Я хотел бы добавить выбранный элемент для фильтрации данных внутри моего фрейма данных.
Надеюсь, это понятно, сложно объяснить это в тексте.
Спасибо за вашу помощь.
data = pd.ExcelFile('C:\\Users\\gdeange1\\dev\\Reco_engine\\IMPORT_RECO_SYSTEM.xlsx')
df = data.parse('DATA_PYTHON',index_col=False,na_values=['NA'])
df['SwTelNo'] = df['SwTelNo'].astype(str)
df = df.reset_index()
from tkinter import *
import tkinter as tk
from tkinter import ttk
from sqlalchemy.sql.expression import column
from tkinter import Label, Button, FALSE, Tk, Entry, StringVar
from tkinter.ttk import *
app = tk.Tk()
app.title("Reco Engine Tool")
app.geometry('500x400')
def callbackFunc(event):
global Province
print("Province selected : " + event.widget.get())
def callbackFunc1(event):
global Heading
print("Heading selected : " + event.widget.get())
def callbackFunc2(event):
global Tier
print("Tier selected : " + event.widget.get())
def callbackFunc3(event):
global Channel
print("Channel selected :" + event.widget.get())
def click():
print(Province.get())
print(Heading.get())
print(Tier.get())
print(Channel.get())
listPROVINCE = []
number1= StringVar(app)
keepvalue1 = number1.get()
Province = tk.Label(app,text = "Choose your Province")
Province.grid(column=0, row=0)
Province = ttk.Combobox(app, values=
["QUEBEC","ALBERTA","ONTARIO","ALIANT", "BRITISH COLUMBIA", "SASKATCHEWAN", "MANITOBA"], textvariable=keepvalue1, state='readonly')
Province.grid(column=0, row=1)
Province.bind("<<ComboboxSelected>>", lambda event:callbackFunc(event))
listPROVINCE.append(Province.get())
listHeadingCluster = []
number2= StringVar(app)
keepvalue2 = number1.get()
Heading = tk.Label(app,text = "Choose your Heading Cluster")
Heading.grid(column=0, row=2)
Heading = ttk.Combobox(app, values=["A","B","C","D","E","F"],
textvariable=keepvalue2, state='readonly')
Heading.grid(column=0, row=3)
Heading.bind("<<ComboboxSelected>>", lambda event:callbackFunc1(event))
listHeadingCluster.append(Heading.get())
listTier =[]
number= StringVar(app)
keepvalue = number.get()
Tier = tk.Label(app,text = "Choose your Tier")
Tier.grid(column=0, row=4)
Tier = ttk.Combobox(app, values=["1","2","3","4"],
textvariable=keepvalue, state='readonly')
Tier.grid(column=0, row=5)
Tier.bind("<<ComboboxSelected>>", lambda event:callbackFunc2(event))
listTier.append(Tier.get())
listChannel =[]
number3= StringVar(app)
keepvalue3 = number3.get()
Channel = tk.Label(app,text = "Choose your Province")
Channel.grid(column=0, row=6)
Channel = ttk.Combobox(app, values=["Premise","Advantage","Acquisition", "RPT20", "RPT19", "Client
Relations", "Retention", "Assignment Center", "Cmr", "Canyps Pub",
"Diamond", " Diamond Biz Dev", "Direct Mail"," DoNotAssign", "Dormant Accounts", "House Accounts", "Manitoba Special Accts", "Non Sales", "Retention Premise", "Special Channels", " Third Party Acquisition", "Unassign"], textvariable=keepvalue3, state='readonly')
Channel.grid(column=0, row=7)
Channel.bind("<<ComboboxSelected>>", lambda event:callbackFunc3(event))
listChannel.append(Channel.get())
tk.Button(app, text="Click Here", command=click).grid(column=0, row=9)
app.mainloop()
dataset_2 = df[(df.Tier.isin(listTier) & (df.PROVINCE.isin(listPROVINCE)) & (df.HeadingCluster.isin(listHeadingCluster)) & (df.Channel.isin(listChannel)))]
dataset2 = dataset_2.reset_index()`
Я бы хотел хранить выбранный элемент с помощью выпадающего списка внутри массива.
Например, для провинций я выберу «ALBERTA» и добавлю это в listPROVINCE
.
То же самое для остальных 3 массивов (listHeadingcluster
), (listTier
), (listChannel
).
Я пытался использовать .current()
, и это сработало. Например, в провинциях я установил Province.current(1)
для получения «ALBERTA», Heading.current(0)
для «A», Tier.current(0)
для «1» и Channel.current(0)
для «Premise».
Вот ошибка, которую я получил при попытке Province.get()
, Heading.get()
, Tier.get()
, Channel.get()
:
ValueError: Найденный массив с 0 объектами (shape = (1, 0)), в то время как check_pairwise_arrays требует минимум 1.