我有一个df如下:
SN Asset Dept Location FREQ SUN
1 A11 Mech ACTB M NaN
2 A12 Mech CTBA M NaN
3 A13 Mech CABA Y NaN
4 A14 Elec ACTB Y NaN
5 A15 Elec CTBA M NaN
6 A16 Elec CABA Y NaN
7 A17 Mech CABA Y NaN
8 A18 Mech CTBA M NaN
9 A19 Mech ACTB Y NaN
10 A20 Elec CTBA M NaN
我需要应用具有两个条件的过滤器。 1)IF部门==' Mech' 2)IF位置包含字符串' CTB' 然后将单元格从FREQ复制到SUN。
输出应如下所示:
SN Asset Dept Location FREQ SUN
1 A11 Mech ACTB M M
2 A12 Mech CTBA M M
3 A13 Mech CABA Y NaN
4 A14 Elec ACTB Y NaN
5 A15 Elec CTBA M NaN
6 A16 Elec CABA Y NaN
7 A17 Mech CABA Y NaN
8 A18 Mech CTBA M M
9 A19 Mech ACTB Y Y
10 A20 Elec CTBA M NaN
答案 0 :(得分:1)
使用mask
,
m1 = df['Dept']=='Mech'
m2 = df['Location'].str.contains("CTB")
df['SUN'] = df['FREQ'].mask(~(m1&m2))
SN Asset Dept Location FREQ SUN
0 1 A11 Mech ACTB M M
1 2 A12 Mech CTBA M M
2 3 A13 Mech CABA Y NaN
3 4 A14 Elec ACTB Y NaN
4 5 A15 Elec CTBA M NaN
5 6 A16 Elec CABA Y NaN
6 7 A17 Mech CABA Y NaN
7 8 A18 Mech CTBA M M
8 9 A19 Mech ACTB Y Y
9 10 A20 Elec CTBA M NaN