如何遍历多个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
相关产品推荐
相关产品推荐

