You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas数据过滤疑问:str[-3:]含义及多字符过滤方法

针对Pandas过滤Cas ID问题的解答

问题1:str[-3:]的含义是什么?

这是Python字符串的切片语法,[-3:]表示取字符串的最后3个字符:

  • 如果原字符串长度≥3,比如"cdret",取出来就是"ret";
  • 如果原字符串长度不足3,比如"ab",就会返回整个字符串"ab"。
    你之前的代码用这个匹配3字符的valid_Cas元素刚好能对上,但遇到5字符的元素时,取最后三位和原元素不匹配,自然就失效了。

问题2:如何实现对多于3个字符的Cas ID的过滤?

分两种场景,看你的实际需求:

场景A:要筛选Cas列值完全属于valid_Cas列表的行(不管Cas值长度)

直接去掉切片操作,用Pandas的isin()方法就行,代码如下:

filtered_df = df[df['Cas'].isin(valid_Cas)]

这样不管valid_Cas里是3字符还是5字符的元素,只要Cas列的值和列表里的元素完全一致,就能被保留。

场景B:要筛选Cas列值长度≤3的行(过滤掉长度超过3的)

用str.len()判断字符串长度:

filtered_df = df[df['Cas'].str.len() <= 3]

问题3:原代码会过滤掉"bnm5623"和"5623bnm"还是保留它们?

原代码是取字符串最后3位去匹配valid_Cas列表:

  • "bnm5623"的最后3位是"623",如果"623"在你的valid_Cas里,就会保留,否则被过滤;
  • "5623bnm"的最后3位是"bnm",如果"bnm"在valid_Cas里,就会保留,否则被过滤。

内容的提问来源于stack exchange,提问作者user614963

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:42:39