在我的DataFrame中,我有一个名为“ teams”的列。它包括城市和队名。我想将城市提取到另一列中。这是数据框:DataFrame示例
nba_df['team'].head(11)
team
0 Toronto Raptors
1 Boston Celtics
2 Philadelphia 76ers
3 Cleveland Cavaliers
4 Indiana Pacers
5 Miami Heat
6 Milwaukee Bucks
7 Washington Wizards
8 Detroit Pistons
9 Charlotte Hornets
10 New York Knicks
我可以使用正则表达式轻松提取列:
nba_df['cities'] = nba_df.team.str.extract('(^[\w*]+)', expand=True)
nba_df[['team', 'cities']].head(11)
team cities
0 Toronto Raptors Toronto
1 Boston Celtics Boston
2 Philadelphia 76ers Philadelphia
3 Cleveland Cavaliers Cleveland
4 Indiana Pacers Indiana
5 Miami Heat Miami
6 Milwaukee Bucks Milwaukee
7 Washington Wizards Washington
8 Detroit Pistons Detroit
9 Charlotte Hornets Charlotte
10 New York Knicks New
但是,在“名称”列中,对于纽约尼克斯,它仅给我提供“ New”的值,而我想获得“ New York”:
那么,如果该单元格有2个单词,该怎么办?如何从开头仅提取一个单词;如果该单元格中有3个单词,如何使用正则表达式从中提取2个单词?
对于您的情况,您只有2或3个字串,可以使用
^(\S+(?:\s+\S+(?=\s+\S+))?)
请参阅regex演示。
细节
^
-字符串开始(\S+(?:\s+\S+(?=\s+\S+))?)
-捕获组1:
\S+
-一个或多个非空白字符(?:\s+\S+(?=\s+\S+))?
-的可选顺序
\s+
-1+空格\S+
-1+非空格(?=\s+\S+)
-紧随其后的是1+空格和1+非空格。这是其他一些正则表达式选项:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句