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

如何在Python循环中动态创建并命名DataFrame?

循环中批量命名DataFrame的正确实现方法

你原来的代码报错,是因为Python赋值语句的左侧必须是合法变量名,不能用字符串拼接结果直接作为变量名赋值。下面给你两种可行的实现方式:

方案一:用字典存储(推荐)

用字典管理处理后的DataFrame,既清晰又避免污染全局命名空间,后续调用和维护更方便:

dfx = [df123, df456]
names = [678, 1011]  # 注意:Python中数字不能以0开头,原代码的01011会触发语法错误,这里改为1011

# 初始化空字典存储结果
processed_dfs = {}

for i, df in enumerate(dfx):
    # 生成目标名称,比如"df678"
    target_name = f"df{names[i]}"
    # 处理DataFrame(修正drop的用法:删除指定列)
    processed_df = df.drop("column", axis=1)
    # 将结果存入字典
    processed_dfs[target_name] = processed_df

# 调用示例:通过字典键获取对应DataFrame
print(processed_dfs["df678"])

方案二:直接创建全局变量(不推荐)

如果一定要生成独立的全局变量,可以通过globals()函数操作全局命名空间,但这种方式容易引发变量名冲突,不利于代码维护:

dfx = [df123, df456]
names = [678, 1011]

for i, df in enumerate(dfx):
    target_name = f"df{names[i]}"
    # 将处理后的DataFrame注册为全局变量
    globals()[target_name] = df.drop("column", axis=1)

# 调用示例:直接使用生成的变量名
print(df678)

额外修正说明

  1. 原代码中01011是非法数字(Python不允许整数以0开头),需改为1011;
  2. 原代码df.drop.loc[:,"column"]用法错误,删除指定列的正确写法是df.drop("column", axis=1),或者用df.loc[:, df.columns != "column"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:07:02