我有一个系列
字符串,其格式为:
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/