판다스 데이터프레임 열로 나열된 Group을 기준으로 각 항목의 Pair를 만들고 싶습니다
조회수 152회
데이터프래임이 아래와 같이 id와 title 구성되어 있습니다.
같은 id에 속한 title 항목을 쌍으로 만들고 싶습니다.
초기 데이터 프레임
id title
1 'A'
1 'B'
1 'C'
2 'D'
2 'E'
3 'F'
3 'G'
3 'H
결과 데이터 프레임
id title_1 title_2
1 'A' 'B'
1 'B' 'C'
1 'C' 'A'
2 'D' 'E'
3 'G' 'H'
1 답변
-
판다스를 이용했다고 볼 수는 없는데, 어쨌든 쭉 한번 보세요.
>>> import pandas as pd >>> from itertools import combinations >>> df = pd.DataFrame({ "id":[1,1,1,2,2,3,3,3], "title":list("ABCDEFGH") }) >>> df id title 0 1 A 1 1 B 2 1 C 3 2 D 4 2 E 5 3 F 6 3 G 7 3 H >>> df[df["id"] == 1]["title"] 0 A 1 B 2 C Name: title, dtype: object >>> list(combinations(df[df["id"]==1]["title"], 2)) [('A', 'B'), ('A', 'C'), ('B', 'C')] >>> for _id in df["id"].unique(): print(_id) 1 2 3 >>> for _id in df["id"].unique(): for pair in combinations(df[df["id"]==_id]["title"], 2): print(_id, pair) 1 ('A', 'B') 1 ('A', 'C') 1 ('B', 'C') 2 ('D', 'E') 3 ('F', 'G') 3 ('F', 'H') 3 ('G', 'H') >>> data = [] >>> for _id in df["id"].unique(): for pair in combinations(df[df["id"]==_id]["title"], 2): data.append({ "id":_id, "title_1":pair[0], "title_2":pair[1] }) >>> df2 = pd.DataFrame(data) >>> df2 id title_1 title_2 0 1 A B 1 1 A C 2 1 B C 3 2 D E 4 3 F G 5 3 F H 6 3 G H
댓글 입력