我有一个功能:
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函数中传递了一个系列,但我不知道如何以这种方式提取值。
答案 0 :(得分:1)
可能最好不要这样做。您的函数仅使用行和列名称对单个值进行操作。所以只需让你的函数直接接受值(也就是你当前调用的值row[column_name]
)作为参数,然后就可以了:
df[name_of_column + '_category'] = df[name_of_column].map(logit_categorization)