如何灵活更改dataframe的名称?

我有许多数据帧,其名称类似于 data_v1、data、v2、data_v3、data_v11、data_v12 等。


现在我喜欢循环每个数据帧并对每个数据帧应用一个函数。所以我需要提供数据框名称。因为第一部分的名称相同。after_ 后的第二部分是不同的。那么如何按照下面的方式编写数据框名称呢?下面有一个错误,指出 data_ 未定义。非常感谢你的帮助


variable=['v1','v2','v3','v11','v12','v13']

for var in variable:

    function(data_%s %var)


慕侠2389804
浏览 164回答 3
3回答

桃花长相依

提供 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 stringsdf_names_str = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]# creates a list of dataframesdf_list = [eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]# creates a dict of dataframesdf_dict = {f'{var}': eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}# test functiondef test(v: pd.DataFrame):    print(v.info())# function call with list of dataframesfor var in df_list:    test(var)# function call with dict of dataframesfor 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}'))

慕工程0101907

基本解决方案: variable=['v1','v2','v3','v11','v12','v13']    for var in variable:    function("data_"+var)

智慧大石

好的,启发了您的所有帮助,我认为最好的解决方案是使用字典将数据帧的名称保存为字典的键。    for var in ['v1','v2','v3','v11','v12','v13']:         function(data_dict['data_'+var.lower()])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python