Как заменить определенное значение значением в разных столбцах в pandas

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

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

  sn.     code    code2    code3
 1       AB       kd       kj
 2       EX       kf       li
 3       EX       ka       lt
 4       EX       n/a      ap
  

Желательно заменить EX в коде значением из code2 или code3.

  sn.     code    code2    code3
 1       AB       kd       kj
 2       kf       kf       li
 3       ka       ka       lt
 4       ap       n/a      ap
  

Ответ №1:

Поскольку я не большой поклонник сложных однострочных выражений, я бы поступил так:

 for _, row in df.iterrows():
    c = row['code']
    c2 = row['code2']
    c3 = row['code3']
    if(c=='EX' and c2):
        c = row['code2']
    elif(c3):
        c = c3
    row['code'] = c
  

Ответ №2:

Попробуйте:

 df.loc[df['code'].eq('EX'), 'code'] = df[['code2','code3']].bfill(1)['code2']