在不保存的情况下将 excel 文件对象转换为数据框

问题描述 投票:0回答:1

我正在使用 Flask 从网站收集上传的 excel 文件。

我想将这些 excel 文件转换为 Pandas DataFrame。

如何使用 pd.ExcelFile() 函数指定文件对象而不是路径?

我的代码如下,我的file_input[N]对象是上传的文件。


@app.route('/', methods = ['POST'])
def upload_file():
    uploaded_files = [x for x in [file_input1, file_input2, file_input3, file_input4, file_input5] if x.filename]
    
    #Button should do no nothing if no files uploaded.
    if uploaded_files = []:
        return redirect(url_for('/'))
    
    combined_cashflows = pd.DataFrame()
    for uploaded_file in uploaded_files:
        ###Need a line here to convert uploaded file into dataframe### 

    return redirect(url_for('download_page'))
python pandas
1个回答
0
投票

可以使用pd.read_excel()函数直接从内存中读取上传的文件,转换成Pandas DataFrame。

这是一个示例,说明如何修改代码以将上传的文件转换为 Pandas DataFrames:

import io

@app.route('/', methods = ['POST'])
def upload_file():
    uploaded_files = [x for x in [file_input1, file_input2, file_input3, file_input4, file_input5] if x.filename]
    
    #Button should do no nothing if no files uploaded.
    if not uploaded_files:
        return redirect(url_for('/'))
    
    combined_cashflows = pd.DataFrame()
    for uploaded_file in uploaded_files:
        # Read the uploaded file into memory as bytes
        file_contents = uploaded_file.read()
        
        # Convert the bytes into a file-like object
        file_obj = io.BytesIO(file_contents)
        
        # Read the file-like object into a Pandas DataFrame
        df = pd.read_excel(file_obj)
        
        # Append the DataFrame to the combined_cashflows DataFrame
        combined_cashflows = pd.concat([combined_cashflows, df], ignore_index=True)

    return redirect(url_for('download_page'))

在此示例中,io.BytesIO() 用于从上传的文件创建类文件对象,然后使用 pd.read_excel() 将类文件对象读入 Pandas DataFrame。最后,使用 pd.concat() 方法将 DataFrame 连接到 combined_cashflows DataFrame。

© www.soinside.com 2019 - 2024. All rights reserved.