将列值拆分为2个新列 - Python Pandas
问题描述:
我有一个数据框,它有'name'列。像'詹姆斯卡梅隆'这样的价值观。我想将它分成2个新列'First_Name'和'Last_Name',但数据中没有分隔符,所以我不太确定如何。我意识到,“詹姆斯”处于[0],“卡梅伦”处于[1],但我不知道你能认识到,没有分隔符将列值拆分为2个新列 - Python Pandas
df = pd.DataFrame({'name':['James Cameron','Martin Sheen'],
'Id':[1,2]})
df
编辑:
AZ”对于我提供的数据框,下面的答案完美无缺。作为一个例子,我创建了这个数据框。我真正的代码看起来像这样”
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
编辑:处理错误'列必须与键的长度相同'。这些数据可能有一些名字与一个以上的空间,如:乔治·马丁小在这种情况下,一种方法是分裂的空间,并使用第一和第二个字符串,忽略第三,如果它存在
df['First_Name'] = df.name.str.split(' ', expand = True)[0]
df['Last_Name'] = df.name.str.split(' ', expand = True)[1]
答
这样做的方式略有不同:
df[['first_name', 'last_name']] = df.apply(lambda row: row['name'].split(), axis=1)
df
Id name first_name last_name
0 1 James Cameron James Cameron
1 2 Martin Sheen Martin Sheen
答
我喜欢这种方法...不是那么快,简单地分裂,但在列名滴在一个非常方便的方式。
df.join(df.name.str.extract('(?P<First>\S+)\s+(?P<Last>\S+)', expand=True))
Id name First Last
0 1 James Cameron James Cameron
1 2 Martin Sheen Martin Sheen
@ JD2775,pl请参阅编辑以处理错误 – Vaishali