对同一数据帧进行多次过滤操作[Pandas]

时间:2018-01-01 15:32:36

标签: python pandas

我有一个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

1 个答案:

答案 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