为了账号安全,请及时绑定邮箱和手机立即绑定

如何灵活更改dataframe的名称?

如何灵活更改dataframe的名称?

慕侠2389804 2023-06-27 18:33:02
我有许多数据帧,其名称类似于 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)
查看完整描述

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}'))


查看完整回答
反对 回复 2023-06-27
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

基本解决方案:


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

    for var in variable:

    function("data_"+var)


查看完整回答
反对 回复 2023-06-27
?
智慧大石

TA贡献1946条经验 获得超3个赞

好的,启发了您的所有帮助,我认为最好的解决方案是使用字典将数据帧的名称保存为字典的键。

    for var in ['v1','v2','v3','v11','v12','v13']:
        function(data_dict['data_'+var.lower()])


查看完整回答
反对 回复 2023-06-27
  • 3 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信