Python 如何在dataframe中使用正则表达式拆分名称?
我的数据集如下所示。我正在尝试使用正则表达式将“第二”列拆分为标题、名字和姓氏。我对python和正则表达式不熟悉 到目前为止,我的代码如下所示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
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
的不同参数的含义。希望能有帮助