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

如何更简洁地将自定义SMA函数应用于上百个DataFrame?

批量应用SMA函数到多个DataFrame的方案

方案1:收集现有DataFrame到列表后批量处理

如果已经存在df1到df100这些单独命名的DataFrame,可以先将它们统一收集到列表中,再用列表推导式批量处理:

import pandas as pd

# 从全局变量中筛选出所有以df开头的DataFrame
dfs = [v for k, v in globals().items() if k.startswith('df') and isinstance(v, pd.DataFrame)]

# 批量应用sma函数,得到处理后的DataFrame列表
processed_dfs = [sma(df, 40) for df in dfs]

方案2:用字典存储保留原名称

如果需要保留每个DataFrame的原始命名(比如区分处理后的结果和原数据),可以用字典来管理:

# 收集所有df开头的DataFrame到字典,键为变量名,值为DataFrame对象
df_dict = {k: v for k, v in globals().items() if k.startswith('df') and isinstance(v, pd.DataFrame)}

# 批量处理,生成处理后的字典
processed_df_dict = {name: sma(df, 40) for name, df in df_dict.items()}

# 若要直接覆盖原变量(谨慎使用,会丢失原始数据)
for name, df in df_dict.items():
    globals()[name] = sma(df, 40)

更优实践:从初始化阶段就用容器管理

建议后续创建DataFrame时,直接用列表或字典存储,避免单独命名df1到df100,从根源简化批量操作:

# 示例:初始化100个DataFrame并存储到列表
dfs = []
for _ in range(100):
    # 替换为你的DataFrame创建逻辑
    new_df = pd.DataFrame(...)
    dfs.append(new_df)

# 直接批量处理
processed_dfs = [sma(df, 40) for df in dfs]

注意:使用globals()筛选时,要确保没有其他以df开头的非DataFrame变量,否则会混入无关数据,可通过isinstance(v, pd.DataFrame)严格过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:40:27