Pandas DataFrame 열을 구분 기호로 분할
제공된 데이터를 쉽게 구문 분석하고 보다 구체적인 정보가 포함된 새 열을 만드는 기능은 가치가 있습니다. 이러한 시나리오 중 하나는 Pandas 데이터 프레임 열을 구분 기호로 분할하고 여기에서 여러 열을 만드는 경우입니다.
예를 들어 A, D, G
와 같은 구분 기호로 구분된 값을 포함하는 열이 있고 이러한 값을 A
, D
및 G
를 별도로 포함하는 여러 열로 분할하려고 합니다.
이 튜토리얼에서는 str.split()
메서드를 사용하여 Pandas 데이터 프레임 열을 구분 기호로 분할하는 방법을 알려줍니다.
Pandas DataFrame 열을 구분 기호로 분할
str.split()
메서드의 사용을 보여주는 다양한 예제로 이동하기 전에 해당 구문과 가능한 매개 변수를 이해하는 것이 중요합니다.
통사론:
Series.str.split(pat=None, n=-1, expand=False, regex=None)
다음은 매개변수에 대한 간략한 설명입니다.
모수 | 설명 |
---|---|
pat |
문자열 유형의 값이거나 문자열을 분할하는 구분 기호로 사용할 정규 표현식이어야 합니다. 공백이 지정되지 않은 경우 구분 기호/구분 기호로 사용됩니다. |
n |
출력의 최대 분할 수를 나타냅니다. n=-1 , n=0 및 n=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=None 및 pat 길이가 1 이 아닌 경우 pat 를 정규식으로 처리합니다. |
pat
가 컴파일된 정규 표현식이고 regex
가 False
로 설정된 경우 ValueError
가 발생합니다. 여기에서 자세한 내용을 읽을 수 있습니다.
이제 코드 예제로 이동하여 연습해 보겠습니다.
full_name
열을 여러 열로 분할(first_name
및 last_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_name
및 last_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]
이 코드 펜스는 한 가지 차이점을 제외하고 이전 코드 펜스와 유사합니다. 여기에서 expand
를 False
로 설정하여 분할 값 목록을 포함하는 열을 생성합니다.
최대 분할 수를 지정하여 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
여기에서 n
을 1
로 설정하여 최대 하나의 분할을 얻습니다. 이 예에서는 이름만 가져오는 데 중점을 둡니다.