在我的数据框架中,有一列名为“teams”。它包括城市和球队名称。我想把这个城市拉进另一个纵队。这是数据帧:数据帧示例
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个单词?
不要为此与正则表达式作斗争,除非您发现它非常易读。相反,从字符串team_name
开始...拆分、切片和连接:
team_words = team_name.split()
team_city = team_words[:-1]
city = ' '.join(team_city)
在一行中:
city = ' '.join(team_name.split()[:-1])
你能很容易地把它插入你的DF广播吗?
对于您只有2或3个字符串的场景,可以使用
^(\S+(?:\s+\S+(?=\s+\S+))?)
请参阅正则表达式演示。
详细信息
^
-字符串的开始(\S(?:\s\S(?=\s\S ))?)
-捕获组1:
\S
-一个或多个非空格字符(?:\s\S(?=\s\S ))?
-可选序列
\s
-1个空格\S
-1个非空格(?=\s\S)
-紧跟1个空格和1个非空格。以下是一些其他正则表达式选项:
^(\S(?:\S)*)\S\S$
(演示)/^(.*\S)\S\S$
(演示)/^(.*)\s\s$
(演示)问题内容: 我有大量的实际文本,需要将单词拉出来以输入到拼写检查器中。我想尽可能多 地 提取 有意义的 单词,而不会产生太大干扰。我知道这附近有很多正则表达式忍者,所以希望有人可以帮助我。 目前,我正在使用提取所有字母序列。这是一个很好的近似值,但是它却拖走了很多垃圾。 理想情况下, 我想要一些正则表达式(不一定漂亮或高效),该正则表达式提取由自然词分隔符(例如,等等)定界的所有字母序列,并忽略任
问题内容: 如何提取Linux(csh)中特定单词之后的单词?更确切地说,我有一个文件,其中只有一行看起来像这样: 我想提取单词 后面的数字。我不能使用sed,因为仅当您要提取整行时才可以使用sed。也许我可以使用awk? 另外,我有多个具有不同值的文件,所以我需要一些提取值但不依赖于值的文件。 问题答案: 与: 基本上循环遍历该行的每个单词。当您找到要查找的第一个单词时,抓住下一个单词并打印出来
当从trie中删除一个单词时,如果该单词的节点没有被用于另一个单词,我会尝试删除该单词的节点。 所以我不想在删除一个单词时仅仅标记一个节点。真正应该删除未使用的节点。 我在这里漏掉了什么? 我像这样从另一个类的trie实例调用函数:
问题内容: 我想运行一个查询,该查询仅从特定字段返回第一个单词,该字段具有多个由空格分隔的单词,我想我可能需要执行一些正则表达式工作来完成此操作?我知道如何使用PHP中的几种方法来执行此操作,但这最好在数据库端执行。任何想法表示赞赏。谢谢。 问题答案: :http : //dev.mysql.com/doc/refman/5.0/zh- CN/string-functions.html#funct
问题内容: 我有一个像这样的词,它由两个简单的词组合而成,没有空格。 我想知道哪种Lucene Analyzer可以将这种单词标记为两个单独的单词? 问题答案: 有一个看作为在Solr的说明 该过滤器使用组成词的词典将复合词拆分或分解为单个词。每个输入令牌均不变地传递。如果还可以将其分解为子字,则每个子字也将在同一逻辑位置添加到流中。 在:“ Donaudampfschiff dummkopf”中
问题内容: 如何获得给定字符串的每个单词的首字母? 我找到了javascript方法,但不确定如何将其转换为php。 问题答案: 在空格上,然后使用表示法以数组形式访问结果字符串: 如果您期望多个空格可以分隔单词,请改用 或者,例如,如果非空格字符分隔单词(),请同时使用: