1. 生成测试数据集

import random
import pandas as pd

names = ['南宫婉','雅菲','余靖秋','姜立','小舞','胡列娜','比比东','云韵','美杜莎','焰灵姬']
df = pd.DataFrame(
    {
        "name"  :names,
        "age"   :[random.randint(18,25) for i in range(len(names))],
        "height":[round(random.uniform(1.6,1.75),2) for i in range(len(names))],
        "weight":[random.randint(45,50) for i in range(len(names))],
    }
)

在这里插入图片描述

剔除 name 不为[‘云韵’,‘美杜莎’],或age 不为[19,20] 的数据

df2[~(df2['name'].isin(['云韵','美杜莎']) | df2['age'].isin([19,20]))]
Out[13]: 
  name  age  height  weight
1   雅菲   24    1.66      46
2  余靖秋   24    1.67      47
4   小舞   18    1.66      45
5  胡列娜   23    1.73      48

2. isin()

2.1 单一条件筛选

  • 筛选 name 包含[‘云韵’,‘美杜莎’] 的数据
filt = df['name'].isin(['云韵','美杜莎'])
df[filt]

在这里插入图片描述

2.2 多个条件筛选

  • 筛选 name 包含[‘云韵’,‘美杜莎’] 或 最小age
filt_1 = df['name'].isin(['云韵','美杜莎'])
filt_2 = df['age'] == df['age'].min()
df[filt_1 | filt_2]

在这里插入图片描述

3. ~isin()

  • 结果与 isin() 相反
  • 筛选 name 不包含[‘云韵’,‘美杜莎’] 的数据
filt = ~df['name'].isin(['云韵','美杜莎'])
df[filt]

在这里插入图片描述

参考资料

[1] python DataFrame isin() 与 ~isin() 2022.2;
[2] 官方链接

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐