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
相关产品推荐
相关产品推荐

