파이썬 DataFrame에서 문자랑 숫자를 각각 분리해서 각각 새로운 column으로 만들고 싶습니다.
조회수 465회
안녕하세요. 파이썬에서 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 답변
-
아주아주 단순한 경우라면, 아래처럼 가능할텐데, 좀 더 복잡하다면, 좀 더 복잡한 파싱함수를 작성하고, 파싱함수를 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
댓글 입력