我有一个这样的数据框,
ID F/P FTE Actual FTE Calculated
1 F 100 100
2 F 110 110
3 P 90 100
4 P 90 90
我要生成结果列
如果FTE实际值不等于FTE计算得出的值,则结果为FALSE,我们不再进行检查。
如果为true,则我们查看F / P列,如果F / P列的值为F,则FTE_Calculated应该等于100。
如果为true,则我们查看F / P列,如果F / P列的值为P,则FTE_Calculated应该小于100。
ID F/P FTE Actual FTE Calculated Expected Result
1 F 100 100 True
2 F 110 110 False (as it is more than 100)
3 P 90 100 False
4 P 90 90 True
答案 0 :(得分:6)
如果有许多条件,最好的可读性是创建每一个以分隔行,然后按照您的逻辑将|
与&
链接起来:
m1 = df['FTE Actual'] == df['FTE Calculated']
m2 = df['F/P'] == 'F'
m3 = df['FTE Calculated'] == 100
m4 = df['F/P'] == 'P'
m5 = df['FTE Calculated'] < 100
df['Expected Result'] = m1 & ((m4 & m5) | (m2 & m3))
print (df)
ID F/P FTE Actual FTE Calculated Expected Result
0 1 F 100 100 True
1 2 F 110 110 False
2 3 P 90 100 False
3 4 P 90 90 True
答案 1 :(得分:0)
Jezrael的解决方案是必经之路。如果您想了解如何对自己进行布尔索引,以下内容可能会有所帮助: