Pandas에서 여러 열 분해

Olorunfemi Akinlua 2023년6월21일
  1. explode() 함수를 사용하여 Pandas에서 여러 열 분해
  2. Series.explode를 사용하여 Pandas에서 여러 열 분해
Pandas에서 여러 열 분해

우리가 접근할 수 있는 데이터는 문자열에서 배열 또는 목록에 이르기까지 다양한 데이터 유형을 포함할 수 있습니다. 일반적으로 조작하기 쉬운 숫자(정수 및 부동 소수점)와 문자열을 선호합니다.

데이터 프레임 셀 내에 목록이 있는 경우 목록을 어떻게 사용합니까? 이 항목에서 설명할 Pandas 라이브러리에서 explode() 함수를 사용할 수 있습니다.

explode() 함수를 사용하여 Pandas에서 여러 열 분해

explode() 함수를 사용하면 인덱스 값을 복제하고 분해된 목록이 있는 데이터 프레임을 반환하는 동안 목록 요소가 있는 데이터 프레임 셀이 행으로 변환됩니다. explode() 함수를 사용하기 전에 목록 요소를 포함하는 Dataframe을 생성해 보겠습니다.

코드 예:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "A": ["1", "2", "3", "4"],
        "B": [["11", "12"], ["13", "14"], ["15", "16"], ["17", "18"]],
        "C": [["31", "32"], ["33", "43"], ["56", "67"], ["78", "87"]],
        "D": [["41", "42"], ["34", "47"], ["55", "66"], ["77", "88"]],
        "E": [["51", "52"], ["35", "45"], ["56", "76"], ["97", "68"]],
    }
)

print(df)

출력:

    A         B         C         D         E
0  1  [11, 12]  [31, 32]  [41, 42]  [51, 52]
1  2  [13, 14]  [33, 43]  [34, 47]  [35, 45]
2  3  [15, 16]  [56, 67]  [55, 66]  [56, 76]
3  4  [17, 18]  [78, 87]  [77, 88]  [97, 68]

Dataframe을 분해하려면 분해에 필요한 column을 전달해야 합니다. 여러 열을 분해할 수 있지만 하나의 열(B)부터 시작하겠습니다.

print(df.explode("B"))

출력:

    A   B         C         D         E
0  1  11  [31, 32]  [41, 42]  [51, 52]
0  1  12  [31, 32]  [41, 42]  [51, 52]
1  2  13  [33, 43]  [34, 47]  [35, 45]
1  2  14  [33, 43]  [34, 47]  [35, 45]
2  3  15  [56, 67]  [55, 66]  [56, 76]
2  3  16  [56, 67]  [55, 66]  [56, 76]
3  4  17  [78, 87]  [77, 88]  [97, 68]
3  4  18  [78, 87]  [77, 88]  [97, 68]

보시다시피 인덱스를 복제하고 셀을 갖도록 목록 요소를 분리합니다. 원래 인덱스를 사용하지 않으려면 ignore_index 매개변수를 사용하여 새 인덱스로 교체할 수 있습니다.

True로 설정하면 원래 인덱스를 새 인덱스로 바꿉니다.

    A   B         C         D         E
0  1  11  [31, 32]  [41, 42]  [51, 52]
1  1  12  [31, 32]  [41, 42]  [51, 52]
2  2  13  [33, 43]  [34, 47]  [35, 45]
3  2  14  [33, 43]  [34, 47]  [35, 45]
4  3  15  [56, 67]  [55, 66]  [56, 76]
5  3  16  [56, 67]  [55, 66]  [56, 76]
6  4  17  [78, 87]  [77, 88]  [97, 68]
7  4  18  [78, 87]  [77, 88]  [97, 68]

여러 열을 기반으로 Dataframe을 분해할 수도 있습니다.

print(df.explode(["B", "C", "D", "E"], ignore_index=True))

출력:

    A   B   C   D   E
0  1  11  31  41  51
1  1  12  32  42  52
2  2  13  33  34  35
3  2  14  43  47  45
4  3  15  56  55  56
5  3  16  67  66  76
6  4  17  78  77  97
7  4  18  87  88  68

Series.explode를 사용하여 Pandas에서 여러 열 분해

Series.explode 함수는 pandas explode() 함수와 동일한 작업을 수행하며 함수와 함께 apply() 함수를 사용하여 전체 Dataframe을 폭발시킬 수 있습니다. 열을 기준으로 인덱스를 설정하고 explode() 함수를 적용한 다음 reset_index() 함수를 사용하여 인덱스를 재설정할 수 있습니다.

print(df.set_index(["A"]).apply(pd.Series.explode).reset_index())

출력:

    A   B   C   D   E
0  1  11  31  41  51
1  1  12  32  42  52
2  2  13  33  34  35
3  2  14  43  47  45
4  3  15  56  55  56
5  3  16  67  66  76
6  4  17  78  77  97
7  4  18  87  88  68
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

관련 문장 - Pandas Column