代码之家  ›  专栏  ›  技术社区  ›  swifty

熊猫-按数字和字母拆分并保存上次拆分

  •  1
  • swifty  · 技术社区  · 8 年前

    我有一个 series 字符串的格式为:

    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 拆分,但输出不包含字母。希望尽可能在大熊猫身上完成这项工作,而不必求助于 re

    谢谢

    2 回复  |  直到 8 年前
        1
  •  2
  •   ALollz    8 年前

    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
    
        2
  •  0
  •   Ishan Srivastava    8 年前
    # 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])