pandas行值过滤简写方法咨询:列值匹配多个指定值的正确写法
合法简短写法说明
你印象里的df[col] == (value1 or value2)写法是不合法的,Python中or为布尔运算符,会直接返回第一个判定为真的值,最终只会对单个值做匹配,过滤结果不符合预期。
pandas官方提供了专门的多值匹配方法isin(),正确写法如下:
# 匹配col1列值为value1或value2的行 df[df[col1].isin([value1, value2])]
额外使用说明
- 如果需要反向过滤,即排除匹配指定值的行,在
isin()前加波浪符~即可:# 排除col1列值为value1或value2的行 df[~df[col1].isin([value1, value2])] - 匹配的目标值数量没有限制,后续新增匹配值直接添加到
isin()的入参数组中即可,无需新增条件判断语句,远优于多个==加|拼接的写法。
内容的提问来源于stack exchange,提问作者soundboyselecta
相关产品推荐
相关产品推荐

