我有一个数据帧,它有一列“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]