Функция биндинга, отображающая значения ‘none’ вместо заданных значений в Pandas [дубликат]

Вопрос или проблема

Я пытаюсь сгруппировать годы по десятилетиям, чтобы сделать визуализацию более ясной, и моя функция, похоже, работает изначально:

def banding(year):

    if year <= 1989:
        print ('1980-е')

    elif year <= 1999:
        print ('1990-е')

    elif year <= 2009:
        print ('2000-е')

    elif year <= 2019:
        print ('2010-е')

    else:
        print ('2020-е')

df_clean['decade'] = df_clean['year'].apply(banding)

Однако, когда я проверяю это по сравнению с DataFrame (df_clean.head()), в столбце вместо 1980-х, 1990-х и т. д. заполнены ‘none’ в каждой строке.

Что я сделал не так?

Я пробовал tolist и to_frame, которые раньше использовал, но ни один из них не сработал (или я неправильно пишу код)

Ответ или решение

Ваша проблема заключается в том, что функция banding ничего не возвращает, а только печатает значения в консоль. Когда вы используете метод apply для применения функции, Pandas ожидает, что функция вернет значение, которое должно быть присвоено в новой колонке. Поскольку ваша функция в текущем виде использует print, возвращаемое значение по умолчанию будет None, и именно поэтому в новом столбце decade вы видите значения None.

Для решения проблемы вам нужно изменить вашу функцию так, чтобы она возвращала строку, а не печатала ее. Вот исправленный код:

def banding(year):
    if year <= 1989:
        return '1980s'
    elif year <= 1999:
        return '1990s'
    elif year <= 2009:
        return '2000s'
    elif year <= 2019:
        return '2010s'
    else:
        return '2020s'

df_clean['decade'] = df_clean['year'].apply(banding)

Теперь, когда вы применяете эту функцию к вашему DataFrame с помощью apply, возвращаемые значения будут присвоены новой колонке decade, и вы сможете видеть ‘1980s’, ‘1990s’ и так далее в соответствующих строках.

После внесения этих изменений, проверьте ваш DataFrame с помощью df_clean.head(), и вы должны увидеть корректные значения в столбце decade.

Если у вас есть дополнительные вопросы или вам нужна дальнейшая помощь, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...