замените ноль значением другого столбца с помощью pandas

#python #pandas #dataframe

Вопрос:

У меня есть фрейм данных df1:

     ref   Name   id  Score
  8400   John    0     12
  3840  Peter  414      0
  7400  David  612     64
  5200  Karen    0      0
 

Я хочу заменить 0 в столбце id значением из столбца ref той же строки, чтобы оно стало:

    ref    Name   id   Score
  8400   John  8400     12
  3840  Peter  414      0
  7400  David  612     64
  5200  Karen 5200      0
 

Ответ №1:

через mask() :

 df['id']=df['id'].mask(df['id'].eq(0),df['ref'])
 

или

через numpy’s where() :

 #import numpy as np
df['id']=np.where(df['id'].eq(0),df['ref'],df['id'])
 

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

1. Спасибо, что это работает, что делать, если я хочу заменить 0 их индексом?

2. Использование @AhmedChater df['id']=np.where(df['id'].eq(0),df['ref'],df.index)

Ответ №2:

С loc помощью , мы смотрим на места в id столбце, где оно равно 0, и помещаем значения ref оттуда (выбор правильных индексов ref происходит автоматически):

 df.loc[df.id == 0, "id"] = df.ref
 

получить

 >>> df

    ref   Name    id  Score
0  8400   John  8400     12
1  3840  Peter   414      0
2  7400  David   612     64
3  5200  Karen  5200      0