Python Pandas如何筛选cusip列不以'CASH'开头的行
最优解决方法
直接使用pandas字符串内置的startswith()方法实现需求,语法简洁且鲁棒性更强,是这类前缀匹配场景的官方推荐写法:
# 加na=False参数是为了处理cusip列存在空值的场景,避免布尔索引出现报错 cleaned_df = df[~df['cusip'].str.startswith('CASH', na=False)]
原有写法的错误原因
- 第一种写法
df['cusip'][:4]是提取cusip列的前4行数据,不是对列中每个字符串取前4个字符,逻辑完全不符 - 第二种写法语法错误,字符串切片要紧跟在
str访问器后面,且该写法本身有缺陷:如果某个cusip值长度不足4,切片会返回更短的字符串,逻辑严谨性不如startswith()
切片写法的修正版(仅作参考,不推荐使用)
# 同样需要额外处理空值场景 cleaned_df = df[df['cusip'].str[:4].fillna('') != 'CASH']
内容的提问来源于stack exchange,提问作者Michael Yoo
相关产品推荐
相关产品推荐

