Python:将函数的输入用作函数内数据框名称的一部分

问题描述

我想定义一个函数,通过更改输入可以采用不同的数据帧。例如,使用

def test (Source): 
    print('df'+ Source)

我想运行test('A')并获取数据帧df_A,运行test('B')并获取数据帧df_B,依此类推。但是它只读取'df_A'作为字符串而不是表。 df_A和df_B是预先定义的。

谢谢!

解决方法

如果您使用globals(),它将返回给您一个字典,该字典以字符串格式的变量名作为键,而变量值作为该键的对应值。

因此,以下代码解决了上述问题

let useMarker = UsedMarker(context: self.context)
useMarker.recording = currentRecording
useMarker.markerItem = chosenMarker
useMarker.id = UUID()
useMarker.hours = ... // etc
,

print命令仅打印使用“ df”和输入变量源构建的并置字符串。
要获取实际数据,需要使用eval()函数,如下所示:

def test (Source): 
    return eval('df_' + Source)

这将返回输出,就像在Jupyter单元格中有df_a一样。