split, for 등을 이용해서 서로 형식(?)이 조금 다른 것은 어떤 방식으로 split을 사용 할 수 있을까요?
조회수 978회
안녕하세요. split, for, if문 최근에 연습 중인 입문자 입니다.
df = pd.DataFrame({"idx5":[ "ex1.x.1",
"ex1.x",
"ex2.x.2",
"ex2.x.3",
"ex1.x.2",
"ex2.x",
"ex2.x.4",
"ex2.x.5",
"ex1.x.3",
"ex3.x",
"ex2.x.6",
"ex2.x.7",
"ex1.x.4",
"ex4.x",
"ex2.x.8",
"ex2.x.9",
"ex1.x.5",
"ex5.x",
"ex2.x.10",
"ex2.x.11",
"ex1.x.6",
"ex6.x",
"ex2.x.12",
"ex2.x.13",
"ex1.x.7",
]})
for i in range(len(df)-1) :
df.at[i+1, "idx6"], df.at[i+1, "idx7"], df.at[i+1, "idx8"] = df.at[i+1, "idx5"].split(".")
ValueError: not enough values to unpack (expected 3, got 2)
위의 에러 코드가 나오는데요. 뭔가 "."
개수가 달라도 split을 할 수 있는 방법이 있을까요?
궁극적으로는 아래 처럼 idx5만 가지고 idx6, idx7, idx8을 만들고 싶어서요. idx8의 빈공간에는 임의의 문자를 동일하게 넣어주셔도 상관은 없습니다..!
idx5 idx6 idx7 idx8
ex1.x.1 ex1 x 1
ex1.x ex1 x
ex2.x.2 ex2 x 2
ex2.x.3 ex2 x 3
ex1.x.2 ex1 x 2
ex2.x ex2 x
ex2.x.4 ex2 x 4
ex2.x.5 ex2 x 5
ex1.x.3 ex1 x 3
ex3.x ex3 x
ex2.x.6 ex2 x 6
ex2.x.7 ex2 x 7
ex1.x.4 ex1 x 4
ex4.x ex4 x
ex2.x.8 ex2 x 8
ex2.x.9 ex2 x 9
ex1.x.5 ex1 x 5
ex5.x ex5 x
ex2.x.10 ex2 x 10
ex2.x.11 ex2 x 11
ex1.x.6 ex1 x 6
ex6.x ex6 x
ex2.x.12 ex2 x 12
ex2.x.13 ex2 x 13
ex1.x.7 ex1 x 7
1 답변
-
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import pandas as pd >>> df = pd.DataFrame({"idx5":[ "ex1.x.1", "ex1.x", "ex2.x.2", "ex2.x.3", "ex1.x.2", "ex2.x", "ex2.x.4", "ex2.x.5", "ex1.x.3", "ex3.x", "ex2.x.6", "ex2.x.7", "ex1.x.4", "ex4.x", "ex2.x.8", "ex2.x.9", "ex1.x.5", "ex5.x", "ex2.x.10", "ex2.x.11", "ex1.x.6", "ex6.x", "ex2.x.12", "ex2.x.13", "ex1.x.7", ]}) >>> df idx5 0 ex1.x.1 1 ex1.x 2 ex2.x.2 3 ex2.x.3 4 ex1.x.2 5 ex2.x 6 ex2.x.4 7 ex2.x.5 8 ex1.x.3 9 ex3.x 10 ex2.x.6 11 ex2.x.7 12 ex1.x.4 13 ex4.x 14 ex2.x.8 15 ex2.x.9 16 ex1.x.5 17 ex5.x 18 ex2.x.10 19 ex2.x.11 20 ex1.x.6 21 ex6.x 22 ex2.x.12 23 ex2.x.13 24 ex1.x.7 >>> df[["idx6", "idx7", "idx9"]] = df["idx5"].str.split(".", 3, expand=True) >>> df idx5 idx6 idx7 idx9 0 ex1.x.1 ex1 x 1 1 ex1.x ex1 x None 2 ex2.x.2 ex2 x 2 3 ex2.x.3 ex2 x 3 4 ex1.x.2 ex1 x 2 5 ex2.x ex2 x None 6 ex2.x.4 ex2 x 4 7 ex2.x.5 ex2 x 5 8 ex1.x.3 ex1 x 3 9 ex3.x ex3 x None 10 ex2.x.6 ex2 x 6 11 ex2.x.7 ex2 x 7 12 ex1.x.4 ex1 x 4 13 ex4.x ex4 x None 14 ex2.x.8 ex2 x 8 15 ex2.x.9 ex2 x 9 16 ex1.x.5 ex1 x 5 17 ex5.x ex5 x None 18 ex2.x.10 ex2 x 10 19 ex2.x.11 ex2 x 11 20 ex1.x.6 ex1 x 6 21 ex6.x ex6 x None 22 ex2.x.12 ex2 x 12 23 ex2.x.13 ex2 x 13 24 ex1.x.7 ex1 x 7 >>> df = df.fillna("-") >>> df idx5 idx6 idx7 idx9 0 ex1.x.1 ex1 x 1 1 ex1.x ex1 x - 2 ex2.x.2 ex2 x 2 3 ex2.x.3 ex2 x 3 4 ex1.x.2 ex1 x 2 5 ex2.x ex2 x - 6 ex2.x.4 ex2 x 4 7 ex2.x.5 ex2 x 5 8 ex1.x.3 ex1 x 3 9 ex3.x ex3 x - 10 ex2.x.6 ex2 x 6 11 ex2.x.7 ex2 x 7 12 ex1.x.4 ex1 x 4 13 ex4.x ex4 x - 14 ex2.x.8 ex2 x 8 15 ex2.x.9 ex2 x 9 16 ex1.x.5 ex1 x 5 17 ex5.x ex5 x - 18 ex2.x.10 ex2 x 10 19 ex2.x.11 ex2 x 11 20 ex1.x.6 ex1 x 6 21 ex6.x ex6 x - 22 ex2.x.12 ex2 x 12 23 ex2.x.13 ex2 x 13 24 ex1.x.7 ex1 x 7 >>>
댓글 입력