前缀的Python正则表达式过滤

时间:2018-04-30 09:20:40

标签: python regex pandas

正则表达式有点违反直觉,在这种情况下,我正在通过kaggle中的内核进行泰坦尼克号。

这是一个带有乘客姓名

的名称字段
#Looking how the data is and searching for a re patterns
df_train["Name"].head()

结果

0                              Braund, Mr. Owen Harris
1    Cumings, Mrs. John Bradley (Florence Briggs Th...
2                               Heikkinen, Miss. Laina

3         Futrelle, Mrs. Jacques Heath (Lily May Peel)

4                             Allen, Mr. William Henry

Name: Name, dtype: object
然后,他继续创建一个新列来分析用户的前缀

#GettingLooking the prefix of all Passengers
df_train['Title'] = df_train.Name.apply(lambda x: re.search(' ([A-Z][a-z]+)\.', x).group(1))

plt.figure(figsize=(12,5))

#Plotting the result
sns.countplot(x='Title', data=df_train, palette="hls")
plt.xlabel("Title", fontsize=16)
plt.ylabel("Count", fontsize=16)
plt.title("Title Count", fontsize=20)
plt.xticks(rotation=45)
plt.show()

这会创建此图

enter image description here

考虑到列中显示的示例名字,他们不一定要以Mr,Mrs title的名字开头。所以一般来说,我很好奇用这个lambda函数创建了什么

df_train['Title'] = df_train.Name.apply(lambda x: re.search(' ([A-Z][a-z]+)\.', x).group(1))

1 个答案:

答案 0 :(得分:0)

它搜索字符序列(第一个是大写字母),后面至少跟一个以空格开头并以点结尾的低端字符(' +') dot是一个特殊字符,它使用\之前)