3 回答
TA贡献1860条经验 获得超8个赞
提供 AB
这将创建一个字符串形式的数据框名称列表
[var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
isinstance(eval(var), pd.core.frame.DataFrame)
DataFrame
在当前实例中找到任何一个。
import pandas as pd
# creates a list of strings
df_names_str = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a list of dataframes
df_list = [eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a dict of dataframes
df_dict = {f'{var}': eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}
# test function
def test(v: pd.DataFrame):
print(v.info())
# function call with list of dataframes
for var in df_list:
test(var)
# function call with dict of dataframes
for k, v in df_dict.items():
test(v)
使用你的循环
必须评估字符串名称才能将其转换为 pandas 数据框对象。
variable=['v1', 'v2', 'v3', 'v11', 'v12', 'v13']
for var in variables:
function(eval(f'data_{var}'))
TA贡献1887条经验 获得超5个赞
基本解决方案:
variable=['v1','v2','v3','v11','v12','v13']
for var in variable:
function("data_"+var)
TA贡献1946条经验 获得超3个赞
好的,启发了您的所有帮助,我认为最好的解决方案是使用字典将数据帧的名称保存为字典的键。
for var in ['v1','v2','v3','v11','v12','v13']: function(data_dict['data_'+var.lower()])
添加回答
举报