Python 如何在dataframe中使用正则表达式拆分名称?

Python 如何在dataframe中使用正则表达式拆分名称?,python,regex,pandas,Python,Regex,Pandas,我的数据集如下所示。我正在尝试使用正则表达式将“第二”列拆分为标题、名字和姓氏。我对python和正则表达式不熟悉 到目前为止,我的代码如下所示 def spilt_it(name): re.findall() if x : return(x.group()) 数据集: { 'Name': {0: ' Braund', 1: ' Heikkinen', 2: ' Allen', 3: ' Moran', 4: ' McCarthy'}, 'Fullname': {0: ' M

我的数据集如下所示。我正在尝试使用正则表达式将“第二”列拆分为标题、名字和姓氏。我对python和正则表达式不熟悉

到目前为止,我的代码如下所示

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}
}

要点:使用函数
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'})
)
然后:使用以下方法将此拆分名称添加到数据帧:

结果:

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
         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
使用可以按空格字符拆分
Fullname
n=-1
表示返回所有拆分的单词。因此,使用
df[“Fullname”].str.split(“,n=-1,expand=True)”的完整工作示例

输出:

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
         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

能否仅添加数据集的几行(行)?请提供一个。强调最低限度。这堵数据墙将实现什么?请查看更新的问题。请添加一个您正在寻找的最终结果的示例。这是泰坦尼克号数据集吗?请解释new=df['Fullname'].str.split('',n=-1,expand=True)?@Data\u是我的编辑。我还添加了split引用,因此您可以轻松理解
split
的不同参数的含义。希望能有帮助