[英]How to split names using regular expression in Pandas dataframe?
我的數據集如下所示。 我正在嘗試使用正則表達式將“第二”列分為標題,名和姓。我是python和regex的新手。
到目前為止,我的代碼如下所示
def spilt_it(name):
re.findall()
if x :
return(x.group())
資料集:
{
'Name': {0: ' Braund', 1: ' Heikkinen', 2: ' Allen', 3: ' Moran', 4: ' McCarthy'},
'Fullname': {0: ' Mr. Owen Harris ', 1: ' Miss. Laina ', 2: ' Mr. William Henry ', 3: ' Mr. James ', 4: ' Mr. Timothy J '},
'num': {0: 1, 1: 0, 2: 0, 3: 0, 4: 0}
}
使用pandas.Series.str.split你可以分割你的Fullname
由空格字符列" "
, n=-1
表示返回所有splited字。 因此,使用df["Fullname"].str.split(" ", n = -1, expand = True)
完整工作示例,
import pandas as pd
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
df = pd.DataFrame({'Name': {0: ' Braund', 1: ' Heikkinen', 2: ' Allen', 3: ' Moran', 4: ' McCarthy'}, 'Fullname': {0: ' Mr. Owen Harris ', 1: ' Miss. Laina ', 2: ' Mr. William Henry ', 3: ' Mr. James ', 4: ' Mr. Timothy J '}, 'num': {0: 1, 1: 0, 2: 0, 3: 0, 4: 0}})
new = df["Fullname"].str.split(" ", n = -1, expand = True)
# making seperate title column from new data frame
df["Title"]= new[1]
# making seperate first name column from new data frame
df["First Name"]= new[2]
# making seperate last name column from new data frame
df["Last Name"]= new[3]
print(df.head())
輸出:
Name Fullname num Title First Name Last Name
0 Braund Mr. Owen Harris 1 Mr. Owen Harris
1 Heikkinen Miss. Laina 0 Miss. Laina
2 Allen Mr. William Henry 0 Mr. William Henry
3 Moran Mr. James 0 Mr. James
4 McCarthy Mr. Timothy J 0 Mr. Timothy J
要點:使用函數str.split(' ', n=1, expand=True)
我在您的示例中沒有看到任何姓氏,所以我只作一個拆分。 您可以使用參數n = 1或n = 2等使任意多。
首先:從名稱中刪除一些多余的空格,然后在第一個空格處拆分名稱:
df = pd.DataFrame(data)
split_names = (df['Fullname']
.str.strip()
.str.split(' ', n=1, expand=True)
.rename(columns={0:'Title', 1:'First_name'})
)
然后:使用pd.concat()將此拆分名稱添加到您的數據框中 :
df = pd.concat([df, split_names], axis=1)
結果:
print(df)
Name Fullname num Title First_name
0 Braund Mr. Owen Harris 1 Mr. Owen Harris
1 Heikkinen Miss. Laina 0 Miss. Laina
2 Allen Mr. William Henry 0 Mr. William Henry
3 Moran Mr. James 0 Mr. James
4 McCarthy Mr. Timothy J 0 Mr. Timothy J
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.