Как создать несколько числовых входов и обновить фреймворк данных, когда появится новая запись, используя потоковый python?

Я новичок в Streamlit, и я работаю над проблемой, когда я пытаюсь создать несколько вводов чисел на основе количества выбранных столбцов и количества значений, выбранных для ввода чисел. Я могу создавать числовые входы в соответствии с выбранными столбцами, а также с кадром данных. Но этот фрейм данных не обновляется, когда я ввожу новый номер в поле ввода.

Это код, над которым я работаю:

import streamlit as st
import pandas as pd

exogenous_features = ['Var1', 'Var2']
predict_size = 4
                    
cols = st.columns(len(exogenous_features))
lists = []
                
for p in range(len(exogenous_features)):
    lists.append([])
                    
for i, c in enumerate(cols):
    with c:
        for h in range(predict_size):
            a=st.number_input('',key=str(random.randint(0,100000)))
            lists[i].append(a)
                                
df= pd.DataFrame(lists)
df= bb.transpose()
df.columns = exogenous_features
st.write(df) 
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
2
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот исправленная версия вашего кода. Примечание: каждый новый st.number_input должен иметь уникальный key, иначе вы всегда будете сталкиваться с ошибкой DuplicateWidgetID:.

import streamlit as st
import pandas as pd

exogenous_features = ['Var1', 'Var2']
predict_size = 4
                    
cols = st.columns(len(exogenous_features))
lists = []
                
for p in range(len(exogenous_features)):
    lists.append([])
                    
for i, c in enumerate(cols):
    with c:
        for h in range(predict_size):
            key = f"number_input_{i}_{h}"
            a = st.number_input(exogenous_features[i], key=key)
            lists[i].append(a)
                                
df = pd.DataFrame(lists)
df = df.transpose()
df.columns = exogenous_features
st.write(df) 

Выход:

Другие вопросы по теме