我有一列,其中名称用单空格,双空格(可以有更多)分隔,我想按“拳头名称”和“姓氏”分割名称
df = pd.DataFrame({'Name': ['Steve Smith', 'Joe Nadal',
'Roger Federer'],{'Age':[32,34,36]})
df['Name'] = df['Name'].str.strip()
df[['First_Name', 'Last_Name']] = df['Name'].str.split(" ",expand = True,)
答案 0 :(得分:1)
这应该做到
df[['First_Name', 'Last_Name']] = df.Name.apply(lambda x: pd.Series(list((filter(None, x.split(' '))))))
答案 1 :(得分:1)
使用\s+
作为拆分模式。这是正则表达式模式,表示“一个或多个空格字符” 。
此外,用n=1
限制拆分次数。这意味着该字符串只会被分割一次(第一次出现空白,从左到右)-将输出限制为2列。
df[['First_Name', 'Last_Name']] = df.Name.str.split('\s+', expand=True, n=1)
[出]
Name Age First_Name Last_Name
0 Steve Smith 32 Steve Smith
1 Joe Nadal 34 Joe Nadal
2 Roger Federer 36 Roger Federer