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

如何遍历多个Pandas DataFrame并批量应用预测函数?

修正你的仓库拆分预测代码

我来帮你梳理下现有代码里的问题,然后给出可行的解决方案~

首先,你的原始代码存在几个关键问题:

  • 语法错误:把仓库列表赋值和for循环写在了同一行,不符合Python语法规范
  • 覆盖原始数据:每次循环都重新赋值rawdf,会导致后续循环丢失原始数据集
  • 筛选条件错误:用了整个DepotList作为筛选条件,而不是当前循环的单个仓库名
  • 输出存储逻辑混乱:i在循环内初始化,每次都会重置为1,且output未提前初始化,会引发报错

修正后的代码方案

推荐用字典存储结果,这样可以直接用仓库名作为键,后续查看结果更直观:

方案1:手动指定仓库列表

# 定义需要处理的仓库列表
DepotList = ['A', 'B']
# 初始化字典存储每个仓库的预测结果
output = {}

for depot in DepotList:
    # 筛选当前仓库的数据,注意不要修改原始的rawdf
    depot_df = rawdf.loc[rawdf['DepotName'] == depot]
    # 对筛选后的DataFrame应用预测函数
    output[depot] = forecast(depot_df)

方案2:自动提取所有唯一仓库(更灵活)

如果不想手动写仓库列表,可以直接从原始DataFrame中提取所有唯一的DepotName:

# 自动获取所有不重复的仓库名称
DepotList = rawdf['DepotName'].unique().tolist()
output = {}

for depot in DepotList:
    depot_df = rawdf.loc[rawdf['DepotName'] == depot]
    output[depot] = forecast(depot_df)

简化版:用字典推导式

如果追求代码简洁,可以一行搞定:

output = {depot: forecast(rawdf[rawdf['DepotName'] == depot]) for depot in rawdf['DepotName'].unique()}

额外优化:处理空数据情况

如果某些仓库在原始数据中没有对应记录,可以加个判断避免报错:

output = {}
for depot in DepotList:
    depot_df = rawdf.loc[rawdf['DepotName'] == depot]
    if not depot_df.empty:
        output[depot] = forecast(depot_df)
    else:
        print(f"警告:仓库 {depot} 没有匹配的数据,已跳过预测")

这样修改后,就能正确拆分每个仓库的DataFrame并单独应用预测函数啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:36:22