Преобразование float64 в 1 как int, naan в 0 как int

#python #pandas

#python #панды

Вопрос:

Я прогнозирую кредиты, и у меня есть столбец с количеством месяцев с момента последней просрочки. Существует много пропущенных значений, потому что многие люди не являются правонарушителями. Я не могу заполнить нули, так как это означало бы, что они были преступными. Я хотел бы преобразовать любые числовые значения в ‘1’, а любые Naan в ‘0’. Столбец является float64 .

Я попытался преобразовать float64 в int(), train['X25'] = int(train['X25']) но получил ошибку типа: невозможно преобразовать ряд в <class ‘int’>

Как это выглядит

 Loan Number Months Since Delinquency
 1           Naan 
 2            0
 3            3
  

Как я хочу, чтобы это выглядело

    Loan      Delinquency
         1            0
         2            1
         3            1
  

Комментарии:

1. Как вы думаете, почему это int(NaN) вернет 0 или int(<some float>) вернет a 1 для произвольных значений? Вы описали, что вы хотите; почему бы не использовать функции, которые проверяют тип и NaN значения, как вы описали? Вы пытались найти эти функции?

Ответ №1:

Вы должны использовать df['Delinquency '] = df['Months Since Delinquency'].isna() для получения логического столбца

Ответ №2:

Это должно сработать

df['Delinquency'] = df['Months Since Delinquency'].notnull().astype(int)