pandas处理value_counts时如何使用AND条件实现自定义数据筛选
解决方案
你原有代码使用&(逻辑与)串联两个条件,要求数据同时满足「不属于出现次数≤3的城市」和「城市为SEL」,但SEL本身出现次数仅为1,属于要移除的类别,两个条件无法同时满足,因此拿不到预期结果。
将逻辑运算符替换为|(逻辑或)即可实现同时匹配两种符合要求的数据:
import pandas as pd df = pd.DataFrame({ 'city': ['NYC', 'NYC', 'SYD', 'NYC', 'SEL', 'NYC', 'NYC'] }) value_counts = df['city'].value_counts() # 过滤逻辑:满足次数阈值 或 属于指定例外项 df = df[(~df.city.isin(value_counts[value_counts <= 3].index)) | (df.city == 'SEL')]
如果后续需要添加多个例外项,更易维护的写法如下:
# 定义例外项列表 exceptions = ['SEL'] # 合并需要保留的类别:满足阈值的类别 + 例外项 keep_cities = value_counts[value_counts > 3].index.union(exceptions) df = df[df.city.isin(keep_cities)]
两种写法最终得到的过滤结果一致,仅保留NYC和SEL对应的数据,剔除出现次数不足阈值的SYD。
内容的提问来源于stack exchange,提问作者ababa
相关产品推荐
相关产品推荐

