如何将列表中的字符串表名与另一列表的对应dataframe绑定匹配
你原先的写法存在两个核心问题:一是两个循环独立运行,第一个循环执行时l还没有赋值,会直接报错;二是循环内的赋值只是修改临时迭代变量,完全不会保存表名和dataframe的对应关系。
推荐两种实现方式:
方案1:使用字典存储映射关系(最推荐)
用Python内置的zip函数可以同时遍历两个长度相同的列表的对应元素,直接生成键为表名、值为对应dataframe的字典,后续直接通过表名就能取到对应的df,调用非常方便。
示例代码:
# 生成表名和dataframe的映射字典 df_mapping = dict(zip(table, list_of_dataframes)) # 调用示例:取table A对应的df print(df_mapping['table A']) # 调用示例:取table J对应的df print(df_mapping['table J'])
方案2:注册为全局变量(不推荐,仅特殊场景使用)
如果你确实需要直接通过和表名关联的变量名调用df,可以把对应关系写入全局命名空间,注意这种方式容易污染全局变量,非必要不要用。
示例代码:
for tbl_name, df in zip(table, list_of_dataframes): # 把表名的空格换成下划线作为合法变量名 globals()[f"{tbl_name.replace(' ', '_')}"] = df # 调用示例:直接用table_A变量取对应df print(table_A)
内容的提问来源于stack exchange,提问作者Shan
相关产品推荐
相关产品推荐

