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

如何对字典中存储的多份DataFrame子集批量应用函数?

问题解答

嘿,别担心重复提问的事儿,咱们直接来解决你的问题~

首先明确说:直接执行result = fun_c(dfs)是不正确的。原因很简单:你的fun_c是预定义的处理单个DataFrame的辅助函数,但你传给它的dfs是一个存储了多个DataFrame的字典,函数没办法直接识别并处理字典里的每个子DataFrame。

下面是几种常见场景的正确做法,你可以根据自己的需求选择:

1. 把每个子DataFrame的处理结果存入新字典

如果你想保留原字典的键值对应关系,把每个子DF的处理结果也存在字典里,可以用循环或者字典推导式:

循环写法(更直观)

results = {}
for key, sub_df in dfs.items():
    # 对每个子DataFrame应用fun_c,结果存入新字典
    results[key] = fun_c(sub_df)

字典推导式(更简洁)

results = {key: fun_c(sub_df) for key, sub_df in dfs.items()}

2. 合并所有处理后的结果为一个大DataFrame

如果你的目标是把所有子DF处理完后合并成一个完整的DataFrame,可以先收集所有处理后的子DF,再用pd.concat合并:

import pandas as pd

# 先处理每个子DF,收集到列表中
processed_sub_dfs = [fun_c(sub_df) for sub_df in dfs.values()]
# 合并成大DF,ignore_index=True重置索引
final_result = pd.concat(processed_sub_dfs, ignore_index=True)

3. 逐个处理子DataFrame(无需保存所有结果)

如果只是需要对每个子DF执行fun_c(比如处理后直接写入文件、输出结果),直接循环处理即可:

for sub_df in dfs.values():
    # 对每个子DF执行fun_c
    fun_c(sub_df)
    # 这里可以追加其他操作,比如写入文件:
    # sub_df_processed = fun_c(sub_df)
    # sub_df_processed.to_csv(f"processed_{key}.csv")

额外补充:如果你的fun_c本身被设计成可以接收字典作为输入(比如内部会遍历字典处理每个DF),那直接传dfs是没问题的,但从常规的“预定义辅助函数”的定位来看,这种情况比较少见,所以还是建议按上面的方式逐个处理字典里的子DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:12:49