HOWTO · Pandas
Pandas의 DataFrame에서 두 개의 텍스트 열을 결합하는 방법
pandas 라이브러리에서 '+' 연산자, apply(), map(), str.cat(), agg() 메서드를 사용하여 DataFrame의 열 결합
이 페이지의 내용
Pandas DataFrame에서 두 개의 텍스트 열을 결합하는 것은 간단합니다. 두 Series를 사이에 공백을 두고 더한 다음, 그 결과를 새 열에 할당합니다.
이렇게 하면 이름과 성의 각 쌍이 원래 행과 정렬된 상태를 유지합니다.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"] + " " + df["Last"]
print(df)
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds
이 예제는 아래에 표시된 Full Name 열을 생성합니다. 다섯 가지 메서드는 모두 같은 입력을 사용하고 같은 값을 생성합니다. 문자열을 직접 연결하려면 + 또는 Series.str.cat()를 선택하고, 행 함수가 변환을 더 쉽게 표현하게 해 줄 때는 행 단위 메서드를 사용하세요.
+ 연산자 메서드
문자열 열의 경우, +는 행별로 값을 연결합니다. 구분자는 일반적인 문자열이므로 원하는 형식에 맞게 " "를 ", " 또는 다른 구분자로 변경하세요. 이 연산자는 숫자 덧셈도 지원하므로, 데이터 유형이 일치한다는 것만으로는 텍스트 연결 연산이 되지 않습니다. 여기서는 First와 Last에 문자열이 포함되어 있기 때문에 사용합니다.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"] + " " + df["Last"]
print(df)
결과 DataFrame은 다음과 같습니다.
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds
Series.map() 메서드
Series.map()는 하나의 Series에 있는 각 값에 매핑을 적용합니다. 이는 DataFrame.map() 호출이 아니며, 이미 문자열인 이 이름들을 str로 변환할 필요는 없습니다. 이 예제는 매핑된 Series를 다른 열과 결합하는 방법을 보여 주기 위해 그 변환을 유지합니다. 값이 혼합된 경우, 변환하기 전에 결측값과 문자열이 아닌 값을 어떻게 표현할지 명확히 결정하세요.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"].map(str) + " " + df["Last"]
print(df)
결과 DataFrame은 다음과 같습니다.
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds
df.apply() 메서드
apply는 axis=1을 전달하면 각 행마다 함수를 한 번씩 호출할 수 있습니다. First와 Last만 선택하면 Age가 결합에서 제외됩니다. 문자열 join 연산은 선택된 각 값이 문자열일 것으로 기대합니다. 덜 균일한 데이터에 사용하기 전에 결측값과 문자열이 아닌 값을 의도적으로 변환하거나 처리하세요. 두 텍스트 열 사이의 간단한 구분자에는 + 또는 Series.str.cat()가 보통 더 직접적입니다.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df[["First", "Last"]].apply(" ".join, axis=1)
print(df)
결과 DataFrame은 다음과 같습니다.
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds
Series.str.cat() 메서드
Series.str.cat()는 문자열 값을 연결하기 위해 설계되었으며 sep로 구분자를 명시합니다. 기본적으로 어느 한 Series에 결측값이 있으면 그 행의 결과도 결측이 됩니다. 결측값에 대한 대체값이 필요하면 na_rep를 설정하고, 그 대체값은 데이터의 의미에 맞게 선택하세요.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"].str.cat(df["Last"], sep=" ")
print(df)
결과 DataFrame은 다음과 같습니다.
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds
df.agg() 메서드
agg도 axis=1과 " ".join 같은 함수가 주어지면 행 단위 결합을 적용할 수 있습니다. apply 예제와 마찬가지로, 선택된 두 열에 대해 작동하며 그 값들이 문자열일 것으로 기대합니다. 집계가 이미 행 단위 처리의 일부일 때 사용하세요. 이 간단한 작업에서는 + 연산자나 Series.str.cat()가 의도를 더 직접적으로 전달합니다. 코드를 자신의 데이터에 맞게 조정할 때는 결과 Full Name 열과 몇 개의 행을 확인하세요.
import pandas as pd
data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df[["First", "Last"]].agg(" ".join, axis=1)
print(df)
결과 DataFrame은 다음과 같습니다.
First Last Age Full Name
0 Ali Azmat 30 Ali Azmat
1 Sharukh Khan 40 Sharukh Khan
2 Linus Torvalds 70 Linus Torvalds