如何在熊猫数据框中使用2个大写字母和一个正则表达式分隔一个字符串?

蓝尾

我在团队的数据框列中,尝试将团队名称“ CubsWhite Sox”分为两部分,“ Cubs”和“ White Sox”。

import pandas as pd
import re
data = [{'teams':'CubsWhite Sox','area':'Chicago','league': 'MLB'}, {'teams': 'Red Sox','area':'Boston', 'league': 'MLB'}, {'teams': 'Blue Jay','area':'Toronto', 'league': 'MLB'}] 

df = pd.DataFrame(data) 
df

到目前为止,我只能达到这个结果。

df["team"] = df.apply(lambda x: re.findall(r"[A-Z][^A-Z]*(?:\s[A-Z][^A-Z]*)", x["teams"]), axis=1)
df
    teams           area    league   team
0   CubsWhite Sox   Chicago MLB      [White Sox]
1   Red Sox         Boston  MLB      [Red Sox]
2   Blue Jay        Toronto MLB      [Blue Jay]

同样在白色,红色和蓝色之后,还有我从这里发现的两个空格。

df["team"] = df.apply(lambda x: re.findall(r"[A-Z0-9][^A-Z]*", x["teams"]), axis=1)
df
    teams           area    league  team
0   CubsWhite Sox   Chicago MLB     [Cubs, White , Sox]
1   Red Sox         Boston  MLB     [Red , Sox]
2   Blue Jay        Toronto MLB     [Blue , Jay]

我可以轻松删除

df['teams'] = df['teams'].str.replace(r' +', '')

您可以帮助我像这样拆分这些团队名称吗,请使用re.findall?

df
    teams           area    league  team
0   CubsWhite Sox   Chicago MLB     [Cubs, White Sox]
1   Red Sox         Boston  MLB     [Red Sox]
2   Blue Jay        Toronto MLB     [Blue Jay]

谢谢!

维克多·史翠比维

您可以使用

df['team'] = df['teams'].str.findall(r'[A-Z][a-z]*(?:\s+[A-Z][a-z]*)?')

请参阅regex演示详细资料

  • [A-Z][a-z]* -大写字母,后跟任何零个或多个小写字母
  • (?:\s+[A-Z][a-z]*)? -匹配的可选非捕获组
    • \s+ -一个或多个空格
    • [A-Z][a-z]* -大写字母,后跟任何零个或多个小写字母。

熊猫测试:

>>> df['teams'].str.findall(r'[A-Z][a-z]*(?:\s+[A-Z][a-z]*)?')
0    [Cubs, White Sox]
1            [Red Sox]
2           [Blue Jay]
Name: teams, dtype: object

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每个第一个字符和任何大写字母的正则表达式

来自分类Dev

正则表达式查找至少包含一个大写字母的子字符串

来自分类Dev

在Java中使用正则表达式在第一个逗号之后,两个大写字母和一个逗号之前提取字符串

来自分类Dev

计数大写字母在一个字符串

来自分类Dev

如何确定一个字符串至少包含一个大写字母,一个小写字母,一个数字和一个标点字符?

来自分类Dev

密码的正则表达式必须包含8个字符,2个小写或大写字母和一个特殊字符'*'5位数字

来自分类Dev

正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

用户正则表达式如何用逗号分隔一个或多个大写字母?

来自分类Dev

如果字符串是特殊字符,如何在python中使用正则表达式删除它的第一个和最后一个字符

来自分类Dev

在Java中使用正则表达式多次匹配一个字符串

来自分类Dev

如何使用正则表达式按最后一个字符拆分字符串?

来自分类Dev

正则表达式不会分隔最后一个字符串

来自分类Dev

如何使用正则表达式拆分两个粘贴的单词,一个全部大写,另一个以大写字母开头

来自分类Dev

正则表达式多个元素一个字符串

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

正则表达式仅匹配2个大写字母的字符串

来自分类Dev

大熊猫-用大写字母替换字符串中的一个字母

来自分类Dev

正则表达式用 2 个分隔符分割一个字符串,2 次

来自分类Dev

如何使用正则表达式从另一个字符串的开头删除多个字符串

来自分类Dev

正则表达式-如何在两个字符或仅一个字符之间获取字符串?

来自分类Dev

使用正则表达式替换匹配字符串的最后一个字符

来自分类Dev

正则表达式从一个字符串到另一个字符串

来自分类Dev

正则表达式以匹配2个字符串并包含另一个字符串

来自分类Dev

如何从 Python 中的正则表达式中只提取一个字符串?

来自分类Dev

如何只拒绝正则表达式模式中的一个字符串

来自分类Dev

使用Ansible在正则表达式匹配行的末尾附加一个字符串

来自分类Dev

正则表达式匹配字符串,长度为3-6个字符,至少一个字母,没有重复的“-”

Related 相关文章

  1. 1

    每个第一个字符和任何大写字母的正则表达式

  2. 2

    正则表达式查找至少包含一个大写字母的子字符串

  3. 3

    在Java中使用正则表达式在第一个逗号之后,两个大写字母和一个逗号之前提取字符串

  4. 4

    计数大写字母在一个字符串

  5. 5

    如何确定一个字符串至少包含一个大写字母,一个小写字母,一个数字和一个标点字符?

  6. 6

    密码的正则表达式必须包含8个字符,2个小写或大写字母和一个特殊字符'*'5位数字

  7. 7

    正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

  8. 8

    正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

  9. 9

    用户正则表达式如何用逗号分隔一个或多个大写字母?

  10. 10

    如果字符串是特殊字符,如何在python中使用正则表达式删除它的第一个和最后一个字符

  11. 11

    在Java中使用正则表达式多次匹配一个字符串

  12. 12

    如何使用正则表达式按最后一个字符拆分字符串?

  13. 13

    正则表达式不会分隔最后一个字符串

  14. 14

    如何使用正则表达式拆分两个粘贴的单词,一个全部大写,另一个以大写字母开头

  15. 15

    正则表达式多个元素一个字符串

  16. 16

    正则表达式表达大写的第一个字符

  17. 17

    正则表达式表达大写的第一个字符

  18. 18

    正则表达式仅匹配2个大写字母的字符串

  19. 19

    大熊猫-用大写字母替换字符串中的一个字母

  20. 20

    正则表达式用 2 个分隔符分割一个字符串,2 次

  21. 21

    如何使用正则表达式从另一个字符串的开头删除多个字符串

  22. 22

    正则表达式-如何在两个字符或仅一个字符之间获取字符串?

  23. 23

    使用正则表达式替换匹配字符串的最后一个字符

  24. 24

    正则表达式从一个字符串到另一个字符串

  25. 25

    正则表达式以匹配2个字符串并包含另一个字符串

  26. 26

    如何从 Python 中的正则表达式中只提取一个字符串?

  27. 27

    如何只拒绝正则表达式模式中的一个字符串

  28. 28

    使用Ansible在正则表达式匹配行的末尾附加一个字符串

  29. 29

    正则表达式匹配字符串,长度为3-6个字符,至少一个字母,没有重复的“-”

热门标签

归档