如何将df名称字符串转换回df?

时间:2016-11-15 19:53:36

标签: python dataframe

我有几个数据帧,例如df1,df2等。然后我列出了这些df的名称,如lst = ['df1', 'df2']

现在,我想在函数“my_func()”

中使用这些df
my_func(dataframe=df1) 

my_func(dataframe=df2)

...

如何在循环中表达数据帧列表,以便我可以在my_func中调用不同的df? (下面的方法不起作用,因为我正在调用字符串而不是df的...)

for i in lst:
    my_func(dataframe=i)

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为将数据集的名称存储为字符串,然后尝试将字符串作为参数传递会产生反效果。

相反,我要做的是创建一个字典,将所有数据集作为字符串键的值,并将字典对象传递给您的函数。

my_frames = {'df1' : [1,2,3], 'df2' : [4,5,6]}

def my_func(dataframe):
    ... do work on dataframe ...

for df_name, df_obj in my_frames.items():
    print('Doing work on:', df_name)
    my_func(df_obj)

字典和函数的另一个好处是你可以直接将字典扩展为命名参数。

my_frames = {'temperature' : 25.5, 'wind' : 4.6}

def weather(temperature=None, wind=None):
    print('The temp is:', temperature, 'and the wind speed is:', wind)

weather(**my_frames)

但这只是一个侧面说明。

答案 1 :(得分:0)

所以我想出来......只需要使用eval():

for i in lst:
    my_func(dataframe=eval(i))