J'ai une énorme dataframe:Créer une liste déroulante sur la base des valeurs uniques dans la colonne et attribuer la valeur sélectionnée à la variable
df
code_1 code_2 code_3
065.0055 3315 N-W
067.3355 4511 S-E
065.0055 3315 N-W
034.0035 4511 N-W
067.3355 1311 S-E
...
Dans le dataframe d'origine, il y a plusieurs colonnes et un grand Nombre de rangées.
J'ai besoin de trouver des valeurs uniques dans les colonnes code_1
, code_2
, code_3
, puis de créer une liste déroulante et d'affecter la valeur sélectionnée à une variable spécifique. Et je dois le faire pour chaque colonne séparément.
Par exemple, je trouve toutes les valeurs uniques dans une colonne code_1
, l'utilisateur sélectionne la valeur dans la liste déroulante (par exemple 065.0055
) et cette valeur est affectée à la variable (vl = '065.0055'
).
Je dois assigner les valeurs choisies à la variable, de sorte que je puisse continuer à faire des calculs basés sur eux.
J'ai trouvé comment créer une liste déroulante, mais je ne sais pas comment affecter la valeur sélectionnée (comme dans l'exemple avec vl
)
Voici mon code:
import ipywidgets as widgets
from IPython.display import display
from IPython.html.widgets import interactive
items = ['-']+sorted(df['code_1'].unique().tolist())
def view(x=''):
if x=='-':
return df
return df[df['code_1']==x]
w = widgets.Select(options=items)
interactive(view, x=w)
Comme en conséquence, je dois obtenir trois variables, par exemple: Si l'utilisateur fait le choix suivant: de code_1
a été choisi 065.0055
, de code_2
a été choisi 3315
, de code_3
a été choisi S-E
.
J'ai besoin de trois variables
vl1 = '065.0055'
vl2 = '3315'
vl3 = 'S-E'
je besoin de conseils, s'il vous plaît!
UPD Après avoir étudié quelques questions, j'ai décidé d'essayer d'utiliser Tkinter
Voici mon code:
items = ['-']+sorted(df['code_1'].unique().tolist())
items1 = ['-']+sorted(df['code_2'].unique().tolist())
items2 = ['-']+sorted(df['code_3'].unique().tolist())
from tkinter import*
class MyOptionMenu(OptionMenu):
def __init__(self, master, status, *options):
self.var = StringVar(master)
self.var.set(status)
OptionMenu.__init__(self, master, self.var, *options)
self.config(font=('calibri',(10)),bg='white',width=12)
self['menu'].config(font=('calibri',(10)),bg='white')
root = Tk()
optionList = items
optionList1 = items1
optionList2 = items2
mymenu1 = MyOptionMenu(root, 'Select code_1', *optionList)
mymenu2 = MyOptionMenu(root, 'Select code_2', *optionList1)
mymenu3 = MyOptionMenu(root, 'Select code_3', *optionList2)
mymenu1.pack()
mymenu2.pack()
mymenu3.pack()
root.mainloop()
Comment puis-je enregistrer le résultat de la sélection à une variable?