df['points'] = np.where((df['gender'] == 'male') & (df['pet1'] == df['pet2'
    ]) | (df['gender'] == 'female') & df['pet1'].isin(['cat', 'dog']), 5, 0)
df
Pandas: как присвоить значения на основе нескольких условий для существующих столбцов?