将eval函数与“mean()”和“median()”一起使用

2024-10-01 19:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算一个数据帧的平均值和中值,所以我把它们放在一个列表中,如下所示:

comb_methods = ['median','mean']

我使用循环和eval函数使函数可调用,并计算结果并将其作为新列添加到数据帧中

for combin in comb_methods:
 combination = eval(combin)
 heartdata[combin] = heartdata.combination(axis=1)

我得到以下错误

name 'median' is not defined

我试图理解为什么这会发生几个小时,但我不明白


Tags: 数据函数in列表forevalmean平均值
1条回答
网友
1楼 · 发布于 2024-10-01 19:15:28

您需要使用getattr而不是eval

for combin in comb_methods:
    heartdata[combin] = getattr(heartdata, combin)(axis=1)

getattr查找名称为字符串的给定对象的属性。书写

getattr(heartdata, 'median')

返回heartdata.median(然后用axis=1参数调用该方法)

另一方面eval只计算传递给它的任何字符串。所以

eval('median')

与在Python脚本上简单地键入median(不带引号)相同。Python将相信median是一个变量,当它找不到所述变量时,将抛出您看到的错误

相关问题 更多 >

    热门问题