【问题标题】:How to write data to .csv file which user picked with file_uploader in Streamlit?如何将数据写入用户在 Streamlit 中使用 file_uploader 选择的 .csv 文件?
【发布时间】:2022-12-15 04:58:48
【问题描述】:

我有一个使用 Streamlit 的 Web 应用程序,我正在使用 file_uploader,用户可以选择他们想要保存数据的 csv 文件,如下图所示。

我想将数据从 AgGrid 写入用户使用 Streamlit file_uploader 选择的 csv 文件。但是我收到了您在图片中看到的错误。如何使用 file_uploader 函数返回的对象将数据写入文件,如果您能提供帮助,我将不胜感激。

    import pandas as pd
    import streamlit as st

    file = st.file_uploader("Upload .csv file", type=FILE_TYPES)
    if file is not None:
      data = pd.read_csv(file)
      st.dataframe(data.head(10))

      dataframe = {
        "DateTime": ["ss"],
        "Name": ["s"],
        "Email": ["ese"],
        "Target User": ["csc"],
        "Alternate Target": ["dsd"],
        "Questions": ["ese"]
    }

      file.write(dataframe)

使用以下代码行,我也无法将创建的数据框写入用户使用 file_uploader 选择的 csv 文件。

dataframe.to_csv(file)

【问题讨论】:

  • 文件名中的空格是拼写错误吗?
  • 我不明白你的意思。

标签: python streamlit


【解决方案1】:

我不能完全理解你的问题。但是要将数据框写入 csv,请使用 df.to_csv(file_name)

df = st.dataframe(data.head(10))
df.to_csv(<filename>)

尝试这个

【讨论】:

  • 我想将 df 写入用户使用 st file_uploader 选择的 csv 文件。我可以用 file_uploader 获取文件名,但我也无法用这种方法将 df 写入文件。
  • 我试过你的最后几行,但我得到:StreamlitAPIException: to_csv() is not a valid Streamlit command。
【解决方案2】:

为上传的文件初始化一个if语句。

import pandas as pd
import streamlit as st


FILE_TYPES = ["csv"]

file = st.file_uploader("Upload .csv file", type=FILE_TYPES)
if file is not None:
    data = pd.read_csv(file)
    st.dataframe(data.head(10))
    
    dataframe = {
        "DateTime": ["ss"],
        "Name": ["s"],
        "Email": ["ese"],
        "Target User": ["csc"],
        "Alternate Target": ["dsd"],
        "Questions": ["ese"]
    }

    # Write the dataframe to a CSV file
    df = pd.DataFrame(dataframe)
    df.to_csv("dataframe.csv")

    # Write dataframe to streamlit 
    st.dataframe(df) 

    # Allow the user to download the new CSV file
    st.download_file(file, "dataframe.csv")

【讨论】:

  • 使用这段代码,我得到了类似 TypeError: a bytes-like object is required, not 'dict' 这样的错误
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 2021-08-22
  • 1970-01-01
相关资源
最近更新 更多