EmptyDataError:没有要从文件中分析的关于streamlit的列

2024-10-03 15:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Streamlight v0.68版,目前正在使用CSV文件进行数据分析

st.title('Report Analysis')
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
    data = pd.read_csv(uploaded_file, low_memory=False)
    st.write(data.shape)

首先,它可以工作,但如果我在本地主机中重新运行该程序,则会出现以下错误:

EmptyDataError: No columns to parse from file
Traceback:

File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\streamlit\script_runner.py", line 324, in _run_script
    exec(code, module.__dict__)
File "D:\My Programs\Projects\ReportAnalysis\epl\app.py", line 9, in <module>
    data = pd.read_csv(uploaded_file, low_memory=False)
File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\pandas\io\parsers.py", line 686, in read_csv
    return _read(filepath_or_buffer, kwds)
File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\pandas\io\parsers.py", line 452, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\pandas\io\parsers.py", line 946, in __init__
    self._make_engine(self.engine)
File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\pandas\io\parsers.py", line 1178, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
File "D:\My Programs\Projects\ReportAnalysis\venv\lib\site-packages\pandas\io\parsers.py", line 2008, in __init__
    self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 540, in pandas._libs.parsers.TextReader.__cinit__

如何处理这个错误


Tags: inpypandasvenvmylibpackagesline
3条回答

根据this post from the Streamlit community page,这是因为他们在应用程序第二次刷新时返回相同的缓冲区。由于pd.read_csv会耗尽缓冲区,因此第二次调用read_csv时不会返回任何行

添加seek(0)重置缓冲区对我来说很有效

例如

st.title('Report Analysis')
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
    uploaded_file.seek(0)
    data = pd.read_csv(uploaded_file, low_memory=False)
    st.write(data.shape)

此问题仅在新版本v0.68.1中出现。作为一种解决方法,您始终可以使用以下方法返回到旧版本,例如0.66: pip install streamlit=0.66

这对你有帮助。适用于当前版本0.69.1

global train_upload
train_upload = st.file_uploader("Upload csv data", type=['csv'])
if (train_upload is not None):
    train_features = train_upload.read()
    train_features = str(train_features,'utf-8')
    train_features = StringIO(train_features)
    train_features = pd.read_csv(train_features)
    st.write(train_features)

相关问题 更多 >