파이썬 DataFrame에서 문자랑 숫자를 각각 분리해서 각각 새로운 column으로 만들고 싶습니다.

조회수 94회

안녕하세요. 파이썬에서 DataFrame 공부 중인 입문자입니다. 만들어진 df의 특정 column에서 문자와 숫자를 구분하고 싶어서요. 찾아보니깐 import re 를 이용하는 거 같은데요. 뭔가 숫자랑 문자랑 여러개 섞여있는 경우에는 어떻게 해야될지 잘 안되서요..

이런 식으로 df가 있으면 맨 앞의 "e"는 없애고 숫자와 문자를 분리해서  idx5, idx6, idx7을 만들고 싶습니다.

a1  idx3       idx4
b   ex1.x.1     ex100f
c   ex1.x       ew200
d   ex2.x.2     ed200
e   ex2.x.3 
f   ex1.x.2 
g   ex2.x       ed200f
h   ex2.x.4     ed300f
i   ex2.x.5 
j   ex1.x.3     ew200
k   ex3.x   
l   ex2.x.6     ex300
m   ex2.x.7     ed200f


위의 df에서 아래 처럼 만들고 싶습니다!

a1  idx3     idx4   idx5    idx6    idx7
b   ex1.x.1  ex100f   x      100        f
c   ex1.x    ew200    w      200    
d   ex2.x.2  ed200    d      200    
e   ex2.x.3             
f   ex1.x.2             
g   ex2.x    ed200f   d      200        f
h   ex2.x.4  ed300f   d      300        f
i   ex2.x.5             
j   ex1.x.3  ew200    w      200    
k   ex3.x               
l   ex2.x.6  ex300    x      300    
m   ex2.x.7  ed200f   d      200        f

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    아주아주 단순한 경우라면, 아래처럼 가능할텐데, 좀 더 복잡하다면, 좀 더 복잡한 파싱함수를 작성하고, 파싱함수를 apply 해야 할 겁니다.

    우선은 아주 단순한 예제만 드립니다.

    >>> df = pd.DataFrame({"col":["ex100f", "ew200", "ed200", None, "ed200f", "ew200"] })
    >>> df
          col
    0  ex100f
    1   ew200
    2   ed200
    3    None
    4  ed200f
    5   ew200
    >>> df['a'] = df['col'].str[1]
    >>> df
          col     a
    0  ex100f     x
    1   ew200     w
    2   ed200     d
    3    None  None
    4  ed200f     d
    5   ew200     w
    >>> df['b'] = df['col'].str[2:5]
    >>> df
          col     a     b
    0  ex100f     x   100
    1   ew200     w   200
    2   ed200     d   200
    3    None  None  None
    4  ed200f     d   200
    5   ew200     w   200
    >>> df['c'] = df['col'].str[5:]
    >>> df
          col     a     b     c
    0  ex100f     x   100     f
    1   ew200     w   200      
    2   ed200     d   200      
    3    None  None  None  None
    4  ed200f     d   200     f
    5   ew200     w   200      
    
    
    • 답변 감사드립니다. 예시가 조금은 적절치 못한거 같긴 한데 질문을 새로 올려보겠습니다. Chang 2021.9.1 20:57

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.