Pandas:如何将列名传递给一个可以在“apply”中使用的函数?

2024-04-18 14:27:33 发布

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

我有一个功能:

def logit_categorisation(row, column_name):
    val = 0
    if row[column_name] > 0.6:
       val = 1
    elif 0.4 < row[column_name] < 0.6:
       val = 2
    else:
       val = 0
    return val

然后我想用这个来:

^{pr2}$

然后应用如下函数:

create_logit_value(r, "the_test_column", {'age':-.02742, 'dlco': 0.0053058 })

我得到这个错误(对于create_logit_value函数中的第二行):

 ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')

我想这是因为当我调用row[column\u name]时,我在logit_分类函数中传递了一个序列,而不是一个离散值,但我不知道如何以这种方式提取值。在


Tags: 函数name功能returnifvaluedefcreate
1条回答
网友
1楼 · 发布于 2024-04-18 14:27:33

最好不要那样做。您的函数只使用行和列名对单个值进行操作。因此,只需让函数直接接受该值(即当前调用的值row[column_name])作为其参数,然后可以执行以下操作:

df[name_of_column + '_category'] = df[name_of_column].map(logit_categorization)

相关问题 更多 >