Python遍历DataFrame字典按键名拆分独立DataFrame的实现方法
问题背景
现有一个存储了多个DataFrame对象的字典,结构参考下图:
需求为拆分字典内各DataFrame的Value列,生成对应的独立DataFrame,且每个独立DataFrame的变量名与字典对应的键名一致。
原有实现代码运行失败:
for value, key in zip(daten_para_dic.values(), daten_para_dic.keys()): '{}'.format(key) = value
运行报错:cannot assign to function call(无法向函数调用结果赋值)。
错误原因
'{}'.format(key)是字符串格式化函数的返回值,属于临时生成的字面量结果,Python语法不允许直接给这类函数调用返回的临时值赋值。
实现方案
方案1:动态生成同名独立变量(非必要不推荐)
如果确实需要生成和字典键名完全一致的独立变量,可以通过修改命名空间字典实现,遍历过程中同步提取Value列:
# 全局作用域下生成变量用globals(),函数内部局部作用域可替换为locals() for key, raw_df in daten_para_dic.items(): globals()[key] = raw_df[['Value']].copy()
注意:如果字典的键不符合Python变量命名规则(比如数字开头、含空格/特殊符号),该方法生成的变量无法直接通过变量名调用,会提升后续维护成本。
方案2:直接在原字典内处理(推荐)
绝大多数场景不需要拆分为独立变量,直接在原字典中完成列拆分即可,通过键名访问和独立变量使用体验一致,还不会污染全局命名空间:
for key in daten_para_dic: # 仅保留Value列,替换原字典中对应的DataFrame daten_para_dic[key] = daten_para_dic[key][['Value']].copy() # 访问示例:如果键为"pressure",直接用daten_para_dic["pressure"]即可调用对应拆分后的DataFrame
内容的提问来源于stack exchange,提问作者R.Muhrez
相关产品推荐
相关产品推荐

