Pandas: как передать имя столбца функции, которая затем может использоваться в 'apply'?

У меня есть функция:

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') 

И я думаю, что это связано с тем, что я передаю серию в функции logit_categorisation, когда я вызываю строку [column_name], а не дискретное значение, но я не знаю, как извлечь значение таким образом.

Наверное, лучше не делать этого. Ваша функция использует только имя строки и столбца для работы с одним значением. Поэтому просто заставьте свою функцию принимать значение напрямую (то есть значение, которое вы в настоящее время вызываете в row[column_name] ) в качестве аргумента, а затем вы можете:

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