如何在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)
额外修正说明
- 原代码中
01011是非法数字(Python不允许整数以0开头),需改为1011; - 原代码
df.drop.loc[:,"column"]用法错误,删除指定列的正确写法是df.drop("column", axis=1),或者用df.loc[:, df.columns != "column"]。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

