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

Pandas嵌套循环生成过滤DataFrame无法存为独立变量,求Pythonic方案

实现方案

推荐最佳实践:用字典存储分组结果

不建议直接动态生成全局变量,会污染命名空间,后续也不方便批量遍历管理,用字典存储是更规范的做法,示例代码如下:

import pandas as pd

path = r'C:/Users/Owner/_APP_Local/data'
df = pd.read_csv(path + '/Data=X_yes.csv')

# 定义空字典存储所有分组结果
grouped_dfs = {}

# 嵌套分组
for name, name_df in df.groupby('Name'):
    for time_frame, tf_df in name_df.groupby('Time_Frame'):
        # 按要求的格式生成键
        key = f"dataframe_{name}_{time_frame}"
        grouped_dfs[key] = tf_df
        # 验证输出可以保留
        print(tf_df[['Date',"Name","Time_Frame"]])

使用时直接通过字典键访问即可,比如要调用Name为A、Time_Frame为2024的分组,直接写grouped_dfs['dataframe_A_2024']即可。


若确实需要生成独立全局变量

如果必须要生成dataframe_{Name}_{Time_Frame}格式的独立全局变量,可以通过globals()实现,代码如下:

import pandas as pd

path = r'C:/Users/Owner/_APP_Local/data'
df = pd.read_csv(path + '/Data=X_yes.csv')

for name, name_df in df.groupby('Name'):
    for time_frame, tf_df in name_df.groupby('Time_Frame'):
        var_name = f"dataframe_{name}_{time_frame}"
        globals()[var_name] = tf_df
        print(tf_df[['Date',"Name","Time_Frame"]])

注意:该方式会在全局作用域生成大量变量,容易出现命名冲突、内存占用不易回收的问题,非必要不推荐使用。


原代码优化提示

原代码中循环变量名data、new_df存在重复赋值的问题,容易引发逻辑bug,建议按照上述示例对分组键和分组DataFrame使用明确的变量名区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:05