Pandas DataFrame 열을 구분 기호로 분할

Mehvish Ashiq 2023년6월21일
Pandas DataFrame 열을 구분 기호로 분할

제공된 데이터를 쉽게 구문 분석하고 보다 구체적인 정보가 포함된 새 열을 만드는 기능은 가치가 있습니다. 이러한 시나리오 중 하나는 Pandas 데이터 프레임 열을 구분 기호로 분할하고 여기에서 여러 열을 만드는 경우입니다.

예를 들어 A, D, G와 같은 구분 기호로 구분된 값을 포함하는 열이 있고 이러한 값을 A, DG를 별도로 포함하는 여러 열로 분할하려고 합니다.

이 튜토리얼에서는 str.split() 메서드를 사용하여 Pandas 데이터 프레임 열을 구분 기호로 분할하는 방법을 알려줍니다.

Pandas DataFrame 열을 구분 기호로 분할

str.split() 메서드의 사용을 보여주는 다양한 예제로 이동하기 전에 해당 구문과 가능한 매개 변수를 이해하는 것이 중요합니다.

통사론:

Series.str.split(pat=None, n=-1, expand=False, regex=None)

다음은 매개변수에 대한 간략한 설명입니다.

모수 설명
pat 문자열 유형의 값이거나 문자열을 분할하는 구분 기호로 사용할 정규 표현식이어야 합니다. 공백이 지정되지 않은 경우 구분 기호/구분 기호로 사용됩니다.
n 출력의 최대 분할 수를 나타냅니다. n=-1, n=0n=None은 모든 분할 반환을 의미합니다. 기본적으로 n-1로 설정됩니다.
expand 부울 값을 사용하며 True인 경우 다른 열에 다른 값을 보유하는 데이터 프레임이 생성됩니다. 그렇지 않으면 문자열 목록이 있는 시리즈입니다. 기본적으로 확장False로 설정됩니다.
regex(버전 1.4.0의 새로운 기능) It accepts a Boolean value that tells if the specified pattern is a regex or not; by default, regex is set to None.
True는 지정된 패턴이 정규식임을 의미하고 False는 문자열 리터럴을 의미합니다. None으로 설정되고 pat 길이가 1인 경우 pat를 문자열 리터럴로 취급합니다. 반면에 regex=Nonepat 길이가 1이 아닌 경우 pat를 정규식으로 처리합니다.

pat가 컴파일된 정규 표현식이고 regexFalse로 설정된 경우 ValueError가 발생합니다. 여기에서 자세한 내용을 읽을 수 있습니다.

이제 코드 예제로 이동하여 연습해 보겠습니다.

full_name 열을 여러 열로 분할(first_namelast_name)

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq",
            "Hania Arif",
            "Zobia Shakeel",
            "Tahir Mukhtar",
            "Mazhar Ali",
        ]
    }
)

print("Before Splitting:\n")
print(df)

df[["first_name", "last_name"]] = df["full_name"].str.split(" ", expand=True)
print("\nAfter Splitting:\n")
print(df)

출력:

Before Splitting:

       full_name
0  Mehvish Ashiq
1     Hania Arif
2  Zobia Shakeel
3  Tahir Mukhtar
4     Mazhar Ali

After Splitting:

       full_name first_name last_name
0  Mehvish Ashiq    Mehvish     Ashiq
1     Hania Arif      Hania      Arif
2  Zobia Shakeel      Zobia   Shakeel
3  Tahir Mukhtar      Tahir   Mukhtar
4     Mazhar Ali     Mazhar       Ali

위 코드 펜스의 데이터 프레임에는 단일 공백으로 구분된 임의의 이름과 성이 포함된 열(full_name)이 포함되어 있음을 볼 수 있습니다.

full_name을 이름과 성을 별도로 포함하는 두 개의 열(first_namelast_name)로 분할합니다. 이를 위해 expand=True와 함께 벡터화된 str.split() 메서드를 사용했습니다.

full_name 열을 분할 값 목록이 있는 새 열로 분할

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq",
            "Hania Arif",
            "Zobia Shakeel",
            "Tahir Mukhtar",
            "Mazhar Ali",
        ]
    }
)

print("Before Splitting:\n")
print(df)

df["[first_name,last_name]"] = df["full_name"].str.split(" ", expand=False)
print("\nAfter Splitting:\n")
print(df)

출력:

Before Splitting:

       full_name
0  Mehvish Ashiq
1     Hania Arif
2  Zobia Shakeel
3  Tahir Mukhtar
4     Mazhar Ali

After Splitting:

       full_name [first_name,last_name]
0  Mehvish Ashiq       [Mehvish, Ashiq]
1     Hania Arif          [Hania, Arif]
2  Zobia Shakeel       [Zobia, Shakeel]
3  Tahir Mukhtar       [Tahir, Mukhtar]
4     Mazhar Ali          [Mazhar, Ali]

이 코드 펜스는 한 가지 차이점을 제외하고 이전 코드 펜스와 유사합니다. 여기에서 expandFalse로 설정하여 분할 값 목록을 포함하는 열을 생성합니다.

최대 분할 수를 지정하여 full_name 열 분할

예제 코드:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq Hussain",
            "Hania Arif Ali",
            "Zobia Shakeel Amjad",
            "Tahir Mukhtar Ahmed",
            "Mazhar Ali Azhar",
        ]
    }
)

print("Before Splitting:\n")
print(df)


print("\nAfter Splitting:\n")
print(df["full_name"].str.split(" ", n=1, expand=True))

출력:

Before Splitting:

               full_name
0  Mehvish Ashiq Hussain
1         Hania Arif Ali
2    Zobia Shakeel Amjad
3    Tahir Mukhtar Ahmed
4       Mazhar Ali Azhar

After Splitting:

         0              1
0  Mehvish  Ashiq Hussain
1    Hania       Arif Ali
2    Zobia  Shakeel Amjad
3    Tahir  Mukhtar Ahmed
4   Mazhar      Ali Azhar

여기에서 n1로 설정하여 최대 하나의 분할을 얻습니다. 이 예에서는 이름만 가져오는 데 중점을 둡니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - Pandas DataFrame Column