我有一个功能:
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
然后我想将其用于:
def create_logit_value(df, name_of_column, d):
df[name_of_column] = df.apply(general_logit, args=(d,), axis=1)
df[name_of_column + '_category'] = df.apply(logit_categorisation, args=(df[name_of_column],), axis=1)
并像这样应用函数:
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_name] 时,我在 logit_categorisation 函数中传递了一系列而不是离散值,但我不知道如何以这种方式提取值。
最好不要这样做。您的函数仅使用行名称和列名称来对单个值进行操作。因此,只需让您的函数直接接受该值(即您当前调用的值 row[column_name]
)作为其参数,然后您可以执行以下操作:
df[name_of_column + '_category'] = df[name_of_column].map(logit_categorization)
我是一名优秀的程序员,十分优秀!