繁体   English   中英

从 Pandas DataFrame 的一列中提取 2 个特殊字符之间的子字符串

[英]Extract sub-string between 2 special characters from one column of Pandas DataFrame

我有一个像这样的 Python Pandas DataFrame:

Name  
Jim, Mr. Jones
Sara, Miss. Baker
Leila, Mrs. Jacob
Ramu, Master. Kuttan 

我只想从 Name 列中提取 name title 并将其复制到名为 Title 的新列中。 输出数据帧如下所示:

Name                    Title
Jim, Mr. Jones          Mr
Sara, Miss. Baker       Miss
Leila, Mrs. Jacob       Mrs
Ramu, Master. Kuttan    Master

我正在尝试使用正则表达式找到解决方案,但未能找到正确的结果。

In [157]: df['Title'] = df.Name.str.extract(r',\s*([^\.]*)\s*\.', expand=False)

In [158]: df
Out[158]:
                   Name   Title
0        Jim, Mr. Jones      Mr
1     Sara, Miss. Baker    Miss
2     Leila, Mrs. Jacob     Mrs
3  Ramu, Master. Kuttan  Master

或者

In [163]: df['Title'] = df.Name.str.split(r'\s*,\s*|\s*\.\s*').str[1]

In [164]: df
Out[164]:
                   Name   Title
0        Jim, Mr. Jones      Mr
1     Sara, Miss. Baker    Miss
2     Leila, Mrs. Jacob     Mrs
3  Ramu, Master. Kuttan  Master

看看str.extract

您正在寻找的正则表达式是(?<=, )\\w+(?=.) 在词中:取前面有, (但不包括)的子串,由至少一个单词字符组成,并以.结尾. (但不包括)。 以后,请使用在线正则表达式测试器,例如regex101 正则表达式变得相当微不足道。

这是假设Name列中的每个条目的格式相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM