我有一个数据帧,它有一列“name”。有“詹姆斯·卡梅隆”这样的价值观我想把它分成两个新的列‘名字’和‘姓氏’,但是数据中没有分隔符,所以我不太确定如何分隔。我知道“james”在[0]位置,“cameron”在[1]位置,但我不确定没有定界符你能认出它

df = pd.DataFrame({'name':['James Cameron','Martin Sheen'],
               'Id':[1,2]})
df

编辑:
对于我提供的数据帧,瓦沙利下面的回答非常有效不过,我创建了这个数据框作为示例。我真正的代码是这样的”
data[['First_Name','Last_Name']] = data.director_name.str.split(' ', expand = True)

不幸的是,这是一个错误:
'Columns must be same length as key'

不过,该列的值与我的示例相同。有什么建议吗?
谢谢

最佳答案

你可以在空间上分开

df[['Name', 'Lastname']] = df.name.str.split(' ', expand = True)

    Id  name            Name    Lastname
0   1   James Cameron   James   Cameron
1   2   Martin Sheen    Martin  Sheen

编辑:处理错误“列的长度必须与键的长度相同”。数据可能有不止一个空间的名称,例如:George Martin Jr.,在这种情况下,一种方法是在空间上分割并使用第一和第二字符串,如果存在,则忽略第三。
df['First_Name'] = df.name.str.split(' ', expand = True)[0]
df['Last_Name'] = df.name.str.split(' ', expand = True)[1]

08-25 05:23