首页 > 解决方案 > Python 3:将函数参数解析为字符串

问题描述

我有一个需要几个参数的函数。其中一个参数是指数据框。现在我想将此参数用作数据框(我很容易做到)和字符串(我只是做不到)。我的意思是字符串,我想将数据框的名称用作字符串。

def get_avg_spectrum(full_signal, fs, skip_samples = 0,...):
    code...
    ...
    ...
return output

result = get_avg_spectrum(full_signal = acc_x_g, fs = 5000, skip_samples = 0,...)

这里,“acc_x_g”指的是 Pandas 系列。所以我想使用整个系列以及文本“acc_x_g”。

# the below doesn't work

full_signal.name
Out[104]: 'ACC'

# ACC is the name of the variable in the Pandas Series "acc_x_g"

我有很多系列要运行这个函数,所以我的想法是简单地改变函数中的“full_signal = xxx”参数。谁能帮忙解决这个问题。

标签: python-3.xfunction

解决方案


基于这个答案(和一些测试),这听起来不可能(在你的例子中,链接答案中的代码返回 ["full_spectrum"] 作为名称而不是所需的 ["acc_x_g"])。

但是,一种可能性是传递带有名称而不是对象的字符串。我不确定你的代码是如何设置的,但这样的事情会起作用。

def get_avg_spectrum(full_signal, fs, skip_samples = 0,...):
    name = full_signal
    df = eval(full_signal)
    ...
    return(output)

result = get_avg_spectrum(full_signal = "acc_x_g", fs = 5000, skip_samples = 0,...)

编辑:如有必要,您可以将这两个(链接的答案以及我在上面发布的内容)结合起来。同样,这取决于您的对象是如何创建的,等等。但是创建一些对象,循环它们以获取它们的名称,将名称传递给函数......它很复杂,但它可以工作。


推荐阅读