如何使用streamlit和python根据数据框中的字段数添加列

Posted

技术标签:

【中文标题】如何使用streamlit和python根据数据框中的字段数添加列【英文标题】:How to add columns based on the number of the fileds in the dataframe using streamlit and python 【发布时间】:2022-01-02 23:24:41 【问题描述】:

我有一个流线型应用程序,它可以读取 csv 文件并将内容显示为数据框。

我需要将列名显示为text_input,方法是使用st.columns(),将它们以水平布局并排显示。

问题是当我运行应用程序时它崩溃并显示以下错误:

StreamlitAPIException: The input argument to st.columns must be either a positive integer or a list of positive numeric weights. See documentation for more information.
Traceback:

File "F:\AIenv\streamlit\app2.py", line 1580, in <module>
    main()
File "F:\AIenv\streamlit\app2.py", line 479, in main
    cols = st.columns(ncol)

代码:

num_new_rows = st.sidebar.number_input("Add Rows",1,50)
ncol = st.session_state.df.shape[1]
    
with st.form(key='add_record_form',clear_on_submit= True):
        st.subheader("Add Record")
        cols = st.columns(ncol)
        rwdta = [
                 cols[i].text_input(st.session_state.df.columns[i]) for i in range(ncol)
                ]
                       

【问题讨论】:

您可以在cols = st.columns(ncol) 之前添加print(ncol) 并分享结果吗? 【参考方案1】:

问题在于它接缝的文件类型,streamlit 改变了他分配所选文件类型的方式,如果它的 csv:

文件类型为:“application/vnd.ms-excel” 现在文件类型是:“text/csv”

所以解决方法是更改​​文件类型

【讨论】:

以上是关于如何使用streamlit和python根据数据框中的字段数添加列的主要内容,如果未能解决你的问题,请参考以下文章

Python Streamlit - 过滤熊猫数据框而不重新运行整个脚本

如何将 pandas.style 与 streamlit 一起使用

如何使用 plotly 和 streamlit 绘制 groupby

如何在streamlit中从用户读取csv文件并转换为pandas数据框

如何使用python通过浏览器下载数据框

使用 Streamlit + Altair 绘制多系列数据框