我使用的是 streamlit 版本 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__
如何处理这个错误?
最佳答案
根据 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)
关于python - 空数据错误 : No columns to parse from file about streamlit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64347681/