【问题标题】:How to extract the name of a variable in a Python function如何在 Python 函数中提取变量的名称
【发布时间】:2021-05-11 03:28:26
【问题描述】:

我有一个自定义 Python 函数,它使用模型的输入来创建预测 y 值、概率和其他一些特征的数据框。我正在尝试提取物理变量名称并将其用作数据框中的列。在函数中,“模型”变量表示定义的模型。是否可以提取物理字符串并使用它来创建新列?

下面是我的代码的一个非常基本的可重现示例

from sklearn.linear_model import LogisticRegression 
import pandas as pd```

df = {'odds_h': [150, 200, -300]}

log_reg = LogisticRegression()

def model_summary(model):
    
    df_summary = pd.DataFrame({'odds_h': df['odds_h'],
                               'model_type': model})
    
    return(df_summary)

model_summary(log_reg)

这是数据框输出当前显示的内容

这是预期的输出

【问题讨论】:

  • 预期的“物理变量名”/“物理字符串究竟是什么?你想得到"model"?请提供示例输入和输出。
  • 在函数内的变量中,我将使用已定义的模型,例如“log_reg”、“gbc”、“rf”等。我想将输入直接调用为列中的文本数据框。我在上面的例子中添加了

标签: python function variable-names


【解决方案1】:

如果要获取传递给函数的变量的变量名,这里有两种简单的方法。

  • get_var_name 可能会给出多个结果,如果你有很多变量是相同的值。
  • easy_way 可能有点难用,需要传入变量名。
  • dict_way 需要将 dict 传递给函数。

您还可以查看这些链接以获取更多解决方案。

python obtain variable name of argument in a function

How to get the original variable name of variable passed to a function

代码:

def get_var_name(arg):
    return [k for k,v in globals().items() if v == arg]

def easy_way(arg,name):
    #dosomething with arg
    return name

def dict_way(**kwargs):
    for arg_name in kwargs:
        return arg_name

a = 1
b = 1
c = 2
print(get_var_name(a))
print(easy_way(a,"a"))
print(dict_way(a = 1))

结果:

['a', 'b']
a
a

【讨论】:

  • 不应该v == av is a
猜你喜欢
  • 2021-08-13
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多