Python/pandas idiom для if/then/else

После выполнения вычислений на всей фрейме pandas мне нужно вернуться и переопределить вычисления переменных (часто устанавливая на ноль) на основе значения другой переменной (ей). Есть ли более сжатый/идиоматический способ выполнения такого рода операций?

df['var1000'][df['type']==7] = 0
df['var1001'][df['type']==7] = 0
df['var1002'][df['type']==7] = 0
...
df['var1099'][df['type']==7] = 0

Есть ли способ pandas -y сделать что-то вроде этого?

if (df['type']==7):
    df['var1000'] = 0
    df['var1001'] = 0
    df['var1002'] = 0
    ...
    df['var1099'] = 0

Ответы

Ответ 1

df.ix[df.type==7, ['var1001', 'var1002']] = 0

Если вы делаете это во всех столбцах, вы можете просто сделать df.ix[df.type==7] = 0. Или, конечно, если у вас есть список столбцов, значения которых вы хотите заменить, вы можете передать этот список во втором слоте:

columnsToReplace = ['var1001', 'var1002', ...]
df.ix[df.type==8, columnsToReplace] = 0