Не записывается в датафрейм значение после функции по категоризации данных
Есть таблица, в которой нужно категоризировать данные по 2 столбцам: пол и возраст, и добавить столбец в таблицу с этими категориями. После функции данные не записываются в столбец. Возникает ошибка:

Подскажите пожалуйста как исправить ошибку?
код:
# категоризируем данные
def age_category(df):
if (df['age_for_service_date'] <= 17) and (df['sex_id'] == 1):
return '1.1'
if (df['age_for_service_date'] <= 17) and (df['sex_id'] == 2):
return '1.2'
if (18 <= df['age_for_service_date'] <= 59) and (df['sex_id'] == 1):
return '2.1'
if (18 <= df['age_for_service_date'] <= 54) and (df['sex_id'] == 2):
return '2.2'
if (df['age_for_service_date'] >= 60) and (df['sex_id'] == 1):
return '3.1'
if (df['age_for_service_date'] >= 55) and (df['sex_id'] == 2):
return '3.2'
df['age_category'] = df.apply(age_category, axis=1)
df.head()
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
я бы вообще предложил использовать родной инструментарий pandas, типа:
df["age_category"] = pd.NA
df.loc[df["sex_id"]==1, "age_category"] = pd.cut(df.loc[df["sex_id"]==1, "age_for_service_date"],
[0, 17, 59, 100], labels=["1.1", "2.1" ,"3.1"], include_lowest=True)
df.loc[df["sex_id"]==2, "age_category"] = pd.cut(df.loc[df["sex_id"]==2, "age_for_service_date"],
[0, 17, 54, 100], labels=["1.2", "2.2" ,"3.2"], include_lowest=True)
разумеется, результат нужно проверить.