Spaces:
Runtime error
Runtime error
File size: 3,311 Bytes
46e7aa4 434c138 46e7aa4 c252e4b 46e7aa4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
import streamlit as st
import pandas as pd
import os
import ast
## Init
# Página
if "pag" not in st.session_state:
st.session_state.pag = 0
# Botón
if "buscar" not in st.session_state:
st.session_state.buscar = False
# Clicked
if "clicked" not in st.session_state:
st.session_state.clicked = False
## Funciones
# Función para cargar archivos
def load_file(file_path):
return pd.read_csv(file_path)
def callback():
st.session_state.buscar = True
# Funciones para editar el session_state
## Aplicación
st.title("Buscador")
# Obtener lista de archivos en la carpeta de datos
cwd = os.getcwd()
st.write(cwd)
data_folder = os.path.join(cwd, 'web', 'pages', 'data')
files = os.listdir(data_folder)
files = [file for file in files if file.endswith(('csv', 'xlsx'))]
# Seleccionar archivo
st.header("Seleccione el archivo")
selected_file = st.selectbox("Archivos disponibles", files)
if selected_file:
# Carga de datos
file_path = os.path.join(data_folder, selected_file)
data = load_file(file_path)
# Buscador por índice o nombre de columna
search_option = st.radio("Buscar por", ('Índice', 'Nombre de columna'))
# Índice
if search_option == 'Índice':
index = st.number_input("Ingrese el índice", min_value=0, max_value=len(data)-1)
result = st.button("Buscar")
if result:
st.session_state.buscar = True
st.session_state.clicked = True
st.session_state.pag = 0
if st.session_state.buscar or st.session_state.clicked:
if st.session_state.clicked:
st.session_state.pag = 0
st.write(data.iloc[index])
if 'Images_URL' in data.columns:
# Lista de imágenes
img_list = ast.literal_eval(data.loc[index, 'Images_URL'])
# Añadir flechas para navegar entre las imágenes
cols = st.columns(7) # 2 columnas para las flechas
# Flecha izquierda para retroceder
with cols[2]:
if st.button("←", on_click=callback()):
if st.session_state.pag > 0:
st.session_state.pag -= 1
else:
st.session_state.pag = len(img_list) - 1
# Flecha derecha para avanzar
with cols[5]:
if st.button("→", on_click=callback()):
if st.session_state.pag < len(img_list) - 1:
st.session_state.pag += 1
else:
st.session_state.pag = 0
# Mostrar la imagen actual
st.image(img_list[st.session_state.pag].strip(), caption="{} de {}".format(st.session_state.pag + 1, len(img_list)))
# Nombre de columna
else:
column = st.selectbox("Seleccione la columna", data.columns)
query = st.text_input(f"Ingrese el valor para buscar en la columna {column}")
if st.button("Buscar"):
st.write(data[data[column].astype(str).str.contains(query, case=False, na=False)])
st.session_state.clicked = False
|