python - Pandas - 按数字和字母分割并保存最后分割

标签 python regex pandas

我有一个系列字符串,其格式为:

12345678ABC
12345678ABCDEF
12345A6789AB
12A3456ABC

我只想在尾随字母的开头进行分割,并像这样输出:

1  12345678       ABC
2  12345678       ABCDEF
3  12345A6789     AB
4  12A3456        ABC
  • 前面的“数字”字符串可以包含一些 A-Z 字符,例如 3 和 4。
  • “数字”和“字母”的长度可变(字母上限为 6)。

我尝试做 df['ID'].str.split('[a-zA-Z]') 希望能捕获最后一个 -1分割但输出不包含字母。如果可能的话,希望在 pandas 中完成此操作,而无需求助于 re

谢谢

最佳答案

使用带有 Series.str.extract 的正则表达式,其中第一个捕获组是直到最后一位数字的所有内容,然后下一个捕获组是剩余的所有字母。我添加了可选的捕获组,以便在您的字符串包含所有数字或所有字母时它可以工作。

s = pd.Series(['12345678ABC', '12345678ABCDEF', '12345A6789AB', 
               '12A3456ABC', '1234123', 'ABCDERED'])

s.str.extract('(?:(.*\d))?(?:([a-zA-Z]+))?')

输出:

            0         1
0    12345678       ABC
1    12345678    ABCDEF
2  12345A6789        AB
3     12A3456       ABC
4     1234123       NaN
5         NaN  ABCDERED

关于python - Pandas - 按数字和字母分割并保存最后分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51434481/

相关文章:

regex - 验证网址并匹配空字符串的正则表达式?

c# - 是否有正则表达式的通用/标准子集?

Javascript正则表达式试图转义/**

python - 有没有一种有效的方法来合并 Pandas 中两个排序的数据帧,保持排序?

Python 查找区间的连续交集

python - 是否有理由劝阻我在我的 Django 应用程序中使用替代模板引擎?

python - 根据 n 个连续条目替换列中的值

python - 将一些 DataFrame 列重新索引为多索引

python - Django-CMS 和多个菜单

python - 在 re.sub 中使子组引用 (\g<1>) 可选