Python:如何筛选以'dh'或'kj'开头的Pandas Series元素
解决Pandas Series筛选特定前缀元素的问题
嘿,我来帮你搞定这个问题!你遇到的情况很正常——str.startswith()和str.match()本身就是用来返回布尔值的,它们的作用是标记每个元素是否符合条件。要拿到实际的元素值,只需要用这些布尔值来索引原Series就可以啦!
下面给你两种具体的实现方法:
方法一:使用str.startswith() + 布尔索引
str.startswith()支持传入一个元组来匹配多个前缀,再用返回的布尔Series去过滤原数据:
import pandas as pd s = pd.Series(['abdhd','abadh','aba', 'djjb','kjsdhf','abwer', 'djd', 'kja']) # 筛选以'dh'或'kj'开头的元素 filtered_series = s[s.str.startswith(('dh', 'kj'))] print(filtered_series)
运行结果:
4 kjsdhf 7 kja dtype: object
方法二:使用str.match() + 正则表达式
用正则的^表示字符串开头,|表示逻辑“或”,同样结合布尔索引筛选:
filtered_series = s[s.str.match(r'^(dh|kj)')] print(filtered_series)
得到的结果和方法一完全一致。
额外技巧:转换成列表
如果需要把筛选后的结果转换成普通Python列表,直接调用.tolist()方法就行:
filtered_list = filtered_series.tolist() print(filtered_list) # 输出: ['kjsdhf', 'kja']
简单来说,你之前拿到的布尔值就是筛选的“钥匙”,把它放进原Series的方括号里,就能打开符合条件的元素大门啦😉
内容的提问来源于stack exchange,提问作者M-M
相关产品推荐
相关产品推荐

