我试图使用正则表达式从pandas列中提取字符串的一部分。但是,代码会导致错误:
AttributeError:' NoneType'对象没有属性' group'
以下是我使用的代码:
dff['User_Mentions'] = dff['content'].apply(lambda x: re.search("@([a-zA-Z0-9]{1,15})", x).group(1))
答案 0 :(得分:1)
要以这种方式使用re.search
,每行都需要匹配,否则返回None
。由于None
没有group
属性,您将看到当前错误。
避免错误的一种方法是稍微更改模式并使用|$
使用空替代方法:
dff['User_Mentions'] = dff['content'].apply(lambda x: re.search("@([a-zA-Z0-9]{1,15})|$", x).group(1))
当没有匹配时,这将在数据框中给出None
值。
另一种选择是使用评论中提到的Series.str.extract
:
dff['User_Mentions2'] = dff['content'].str.extract('@([a-zA-Z0-9]{1,15})', expand=False)
这会导致行中的NaN
值无匹配。