正则表达式有点违反直觉,在这种情况下,我正在通过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()
这会创建此图
考虑到列中显示的示例名字,他们不一定要以Mr,Mrs title的名字开头。所以一般来说,我很好奇用这个lambda函数创建了什么
df_train['Title'] = df_train.Name.apply(lambda x: re.search(' ([A-Z][a-z]+)\.', x).group(1))
答案 0 :(得分:0)
它搜索字符序列(第一个是大写字母),后面至少跟一个以空格开头并以点结尾的低端字符(' +') dot是一个特殊字符,它使用\之前)