如何筛选DataFrame中以特殊字符@开头的列数据?
实现方案
根据需求分两种常见场景处理:
- 场景1:筛选出
text列整段值以@开头的行
直接用pandas内置的字符串前缀判断方法,性能最优,代码如下:# na=False 表示列中空值NaN统一判定为不匹配,避免布尔索引报错 filtered_df = df[df['text'].str.startswith('@', na=False)] - 场景2:从每一行的
text文本内容中,提取所有内嵌的@开头片段(比如@用户名类的提及内容)
用正则匹配提取即可,可根据需要调整匹配规则:import re # 规则1:匹配@开头、后续为字母/数字/下划线的内容(常规用户名场景) df['at_content'] = df['text'].apply(lambda x: re.findall(r'@\w+', str(x))) # 规则2:匹配@开头、后续到第一个空白字符前的所有内容(适配带特殊符号的用户名) # df['at_content'] = df['text'].apply(lambda x: re.findall(r'@[^\s]+', str(x)))
注意:如果
text列存在非字符串类型值(数值、空值等),可以先执行df['text'] = df['text'].astype(str)做统一类型转换,避免字符串方法调用报错。
内容的提问来源于stack exchange,提问作者svmmy_776
相关产品推荐
相关产品推荐

