我有一个series
的字符串,格式为:
12345678ABC
12345678ABCDEF
12345A6789AB
12A3456ABC
我只想在结尾字母的开头分割并输出,如下所示:
1 12345678 ABC
2 12345678 ABCDEF
3 12345A6789 AB
4 12A3456 ABC
我尝试做df['ID'].str.split('[a-zA-Z]')
,希望能抓住最后的-1
拆分,但输出中不包含字母。希望在不使用re
的情况下在熊猫中完成此操作。
谢谢
答案 0 :(得分:2)
使用带有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
答案 1 :(得分:0)
# Let A be the array containing strings
# Let nA be the seperated string array
# Let pA be the prefix array
for i in A:
t = -1
for index, character in enumerate(i[::-1]):
if character.isdigit():
t = index + 1
break
nA.append(i[t:])
pA.append(i[:t])
for index, i in enumerate(A):
print(pA[index], ' ', nA[index])