#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