You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多份Excel文件打包为单个参数传入Python函数?

解决方案

一、生成parameter_group的几种实现方式

1. 使用字典(最灵活易读)

在主脚本中一次性读取所有Excel文件,将它们存入带语义键名的字典:

import pandas as pd

# 主脚本中读取文件并打包
parameter_group = {
    'first_data': pd.read_excel('para/first.xlsx', sheet_name='Sheet1'),
    'second_data': pd.read_excel('para/second.xlsx', sheet_name='Sheet1'),
    # 按需添加其他文件
}

# 调用函数
import function
function.calculate(parameter_group)

同时修改function.py中的calculate函数,从字典中提取数据:

# function.py
def calculate(parameter_group):
    file1 = parameter_group['first_data']
    file2 = parameter_group['second_data']
    # 原计算逻辑保持不变,仅调整数据获取方式
    ...

2. 使用元组(轻量简洁)

如果不需要语义键名,按固定顺序将DataFrame打包成元组:

# 主脚本
parameter_group = (
    pd.read_excel('para/first.xlsx', sheet_name='Sheet1'),
    pd.read_excel('para/second.xlsx', sheet_name='Sheet1'),
    # 其他文件
)

function.calculate(parameter_group)

修改function.py的函数实现:

def calculate(parameter_group):
    file1, file2, ... = parameter_group  # 按元组顺序解包
    ...

3. 使用数据类(结构化更强)

需要清晰的参数结构时,用dataclasses定义结构化参数组:

# 主脚本
from dataclasses import dataclass
import pandas as pd

@dataclass
class ParameterGroup:
    first_data: pd.DataFrame
    second_data: pd.DataFrame
    # 定义其他需要的DataFrame字段

parameter_group = ParameterGroup(
    first_data=pd.read_excel('para/first.xlsx', sheet_name='Sheet1'),
    second_data=pd.read_excel('para/second.xlsx', sheet_name='Sheet1'),
)

function.calculate(parameter_group)

修改function.py的函数实现:

def calculate(parameter_group):
    file1 = parameter_group.first_data
    file2 = parameter_group.second_data
    ...

二、转为.pkl格式确实能大幅提升读取速度

Excel读取需要解析格式、公式、样式等复杂内容,而.pkl是Python专属的二进制序列化格式,直接存储DataFrame的内存结构,读取时无需额外解析,速度通常是Excel读取的数倍甚至几十倍。

转存为pkl的方法(仅需执行一次,文件更新时重新执行)

import pandas as pd

# 读取Excel并转存为pkl
pd.read_excel('para/first.xlsx', sheet_name='Sheet1').to_pickle('para/first.pkl')
pd.read_excel('para/second.xlsx', sheet_name='Sheet1').to_pickle('para/second.pkl')

后续读取pkl的方式

# 主脚本中读取pkl并打包
parameter_group = {
    'first_data': pd.read_pickle('para/first.pkl'),
    'second_data': pd.read_pickle('para/second.pkl'),
}

注意:pkl文件仅支持Python环境读取,若需跨语言交互不适用;Excel文件内容更新后,需重新生成对应的pkl文件。

内容的提问来源于stack exchange,提问作者Song_Rui123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:45:29