判断当其它列满足多条件时,为特定列打标签

问题

在‘结果’列为满足条件的相应行逐一打标签,运行代码后,每次打完标签后会把前一次的覆盖掉。请问怎样可以同时打不同的标签?

代码
import pandas as pd
import numpy as np

df= pd.DataFrame({'产品': ['产品1', '产品2', '产品3', '产品4'],
                 'A列': ['收益', '收益好', '差', '收益'], 
                 'B列': ['金融收益', '航司收益', '收益', '收益'],
                 'C列': [10, 20, 30, 40],
                 '结果': ['待定','待定','待定','待定']})

list1 = '收益'
list2 = '航司|金融'

###Y1标签:C列的值>=40,且满足“B列包含list1任意内容的同时不包含list2所有内容” 或 “A列包含list1任意内容”:
df['结果'] = df[(df['B列'].str.contains(list1))&(~df['B列'].str.contains(list2))&(df['C列']>=40)]['结果'].replace({'待定':'Y1'})
print(df)

>>>以上打印输出结果:
   产品   A列    B列  C列   结果
0  产品1   收益  金融收益  10  NaN
1  产品2  收益好  航司收益  20  NaN
2  产品3    差    收益  30  NaN
3  产品4   收益    收益  40   Y1


###Y2标签:C列的值<40,且满足“B列包含list1任意内容的同时不包含list2所有内容” 或 “A列包含list1任意内容”:
df['结果'] = df[(df['B列'].str.contains(list1))&(~df['B列'].str.contains(list2))&(df['C列']<40)]['结果'].fillna('Y2')
print(df)

>>>以上打印输出结果:
    产品   A列    B列  C列   结果
0  产品1   收益  金融收益  10  NaN
1  产品2  收益好  航司收益  20  NaN
2  产品3    差    收益  30   Y2
3  产品4   收益    收益  40  NaN

###N1标签:C列的值<40,且满足“B列包含list2任意内容” :
df['结果'] = df[(df['B列'].str.contains(list2))&(df['C列']<40)]['结果'].fillna('N1')
print(df)

>>>以上打印输出结果:
    产品   A列    B列  C列   结果
0  产品1   收益  金融收益  10   N1
1  产品2  收益好  航司收益  20   N1
2  产品3    差    收益  30  NaN
3  产品4   收益    收益  40  NaN
想达到的结果

在有很多行数据时,可以按照以下逻辑为结果列打标签:
Y1标签:C列的值>=40,且满足“B列包含list1任意内容的同时不包含list2所有内容” 或 “A列包含list1任意内容”
Y2标签:C列的值<40,且满足“B列包含list1任意内容的同时不包含list2所有内容” 或 “A列包含list1任意内容”
N1标签:C列的值<40,且满足“B列包含list2任意内容”

    产品   A列    B列  C列   结果
0  产品1   收益  金融收益  10   N1
1  产品2  收益好  航司收益  20   N1
2  产品3    差    收益  30  Y2
3  产品4   收益    收益  40  Y1

这样写是不是就达到你想要的效果了?

df.loc[(df['B列'].str.contains(list1))&(~df['B列'].str.contains(list2))&(df['C列']>=40),'结果'] = 'Y1'
df.loc[(df['B列'].str.contains(list1))&(~df['B列'].str.contains(list2))&(df['C列']<40),'结果'] = 'Y2'
df.loc[(df['B列'].str.contains(list2))&(df['C列']<40),'结果']='N1'
    产品   A列    B列  C列  结果
0  产品1   收益  金融收益  10  N1
1  产品2  收益好  航司收益  20  N1
2  产品3    差    收益  30  Y2
3  产品4   收益    收益  40  Y1