df = df.fillna('AAA')
mask = df['Col1'] == 'AAA'
mp = {'Col1': 'col1_v2', 'Col2': 'col2_v2', 'Col3': 'col3_v2'}
for k in mp:
    df.loc[mask, k] = df[mp.get(k)]
df = df.replace('AAA', np.nan)
Pandas update multiple columns at once