Панды заменяют значение нескольких столбцов на основе значения

#pandas #loops

#pandas #циклы

Вопрос:

У меня есть фрейм данных, подобный этому:

 col1  col2 col3  col4
 0      1     0   45
 4      3   102   72
 0      0    11  101
 

если значение каждого элемента в столбцах с 1 по 3 больше 0, их следует заменить значением col4, поэтому ожидаемый результат должен быть:

 col1  col2  col3 col4
  0     45     0   45
 72     72    72   72
  0      0   101  101
 

Ответ №1:

Вы можете использовать mask :

 cols = ['col1', 'col2', 'col3']

df[cols] = df[cols].mask(df[cols]>0, df['col4'], axis=0)
 

Вывод:

    col1  col2  col3  col4
0     0    45     0    45
1    72    72    72    72
2     0     0   101   101