Найти - Пользователи
Полная версия: функция, чтобы создать две группы в датасете
Начало » Python для новичков » функция, чтобы создать две группы в датасете
1
jeen
Добрый день. Подскажите, пожалуйста, что не так с функцией. У меня есть данные о доходе клиентов, в этих данных пропуски. Я хочу разделить случаи на те, когда есть данные, и когда нет. Выше пропуски NaN уже перекодированы в нули.
Теперь я мучаю функцию, с помощью которой хочу получить новый столбец, разделяющий клиентов на две категории.

 def no_value(row):
    for row in clients:
        if row['total_income'] == 0:
            return 'нет данных'
        else:
            return 'есть данные'

 clients['income_novalue'] = clients['total_income'].apply(no_value)

Ошибку дает такую:
<ipython-input-32-0dabf40b23f4> in no_value(row)
2 def no_value(row):
3 for row in clients:
—-> 4 if row == 0:
5 return ‘нет данных’
6 else:

TypeError: string indices must be integers

Спасибо за любой совет, всю голову сломал.
doza_and
1. Ничего сказать нельзя, по вашему коду непонятно что такое clients (сами бы его содержимое посмотрели).
2. Заменять NaN на нули очень плохая идея. Ноль валидный доход. Теперь вы не сможете отличить людей у которых нет данных от людей у которых нулевой доход.
jeen
Clients - это датасет. Выглядит так - см. плз скриншот в приложении.

doza_and
jeen
Clients - это датасет.
В языке питон нет понятия датасет. Тут не экстрасенсы чтобы угадывать что вы имеете ввиду и какие пакеты используете.
99 процентов участников форума не будут скачивать картинку. Смотреть что там. Перебивать текст с картинки в код.
Если вы хотите чтобы вам помогли вы должны приводить фгагмент в виде текста с использованием кнопочки <>.
Фрагмент должен быть запускабелен.

p.s.
Совет вам простой чтобы голову не сломали. Пользуйтесь отладчиком или печатайте промежуточные результаты чтобы вам было понятно что внутри переменных и что именно вы с ними делаете. row судя по всему строка, конкретнее можно сказать только имея работающий код. Активнее пользуйтесь интерактивным режимом, и функциями help, dir ,type, id.

p.s. 1
:) Тут некоторые используют pandas. Я бы начинающим не рекомендовал им пользоваться, так как эта работа напоминает действия Гарри Поттера. pandas содержит сотни разных типов объектов и управляется тысячами неочевидных и зачастую нелогичных заклинаний. Успешные действия зависят от знания всего этого хозяйства наизусть, иначе невовремя сказанное заклинание “левиоссо” может привести к зависанию компьютера и потере данных.
jeen
Все, порядок - работает:
 def no_value(clients):
    total_income = clients['total_income']
    for row in clients:
        if total_income == 0:
            return 'нет данных'
        else:
            return 'есть данные'
clients['income_novalue'] = clients.apply(no_value, axis = 1)
AD0DE412
см. ниже
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB