如何从DataFrame字典中提取键不含点号的独立DataFrame
批量提取字典中不含特定字符的DataFrame为独立变量
问题背景
现有一个存储DataFrame的字典df_dict,其键列表如下:
dict_keys(['df1.test', 'df2.test', 'df3.test','df1_test','df2_test','df3_test'])
需要将键名中不含.的DataFrame提取出来,生成对应名称的独立变量(如df1_test、df2_test),替代手动逐个赋值的繁琐操作。
原尝试代码的问题
你写的代码存在三个关键问题:
str.contains是pandas Series的方法,普通字符串不能直接调用,判断字符是否存在用in关键字即可- Python中否定判断用
not,而非! - 直接给循环变量
key赋值无法创建全局/局部变量,需要通过命名空间动态创建
正确实现方式
方式1:动态创建全局变量
直接生成对应名称的独立DataFrame变量:
import pandas as pd # 遍历字典键 for key in df_dict: # 筛选不含"."的键 if '.' not in key: # 动态创建以键名为变量名的DataFrame globals()[key] = df_dict[key]
注:字典中的值已经是DataFrame,无需再次用
pd.DataFrame()转换,直接赋值即可。
方式2:存入新字典管理(更安全规范)
如果担心全局变量污染,推荐将筛选后的DataFrame存入新字典,后续通过字典访问:
clean_dfs = {} for key in df_dict: if '.' not in key: clean_dfs[key] = df_dict[key] # 访问示例:clean_dfs['df1_test']
内容的提问来源于stack exchange,提问作者BB123
相关产品推荐
相关产品推荐

