同一数据帧上的多个筛选操作

2024-10-01 19:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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) 如果部门=='机械' 2) 如果位置包含字符串“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

Tags: locationnanassetsunfreqsnmecha13
1条回答
网友
1楼 · 发布于 2024-10-01 19:26:48

使用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

相关问题 更多 >

    热门问题