Не записывается в датафрейм значение после функции по категоризации данных

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

Подскажите пожалуйста как исправить ошибку?

Таблица вот: https://docs.google.com/spreadsheets/d/1C_EzH6ACY3M7c2W1gW_A5GDpwYAGPQFt/edit?usp=sharing&ouid=106434889534507496883&rtpof=true&sd=true

код:

# категоризируем данные

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)

разумеется, результат нужно проверить.

→ Ссылка