【发布时间】:2017-10-27 23:58:13
【问题描述】:
我有一个包含 20 列左右的数据框。其中一列称为“director_name”,并具有诸如“John Doe”或“Jane Doe”之类的值。我想把它分成两列,“First_Name”和“Last_Name”。当我运行以下命令时,它按预期工作并将字符串分成 2 列:
data[['First_Name', 'Last_Name']] = data.director_name.str.split(' ', expand
= True)
data
First_Name Last_Name
John Doe
它很好用,但是当我在“director_name”下有 NULL (NaN) 值时它不起作用。它抛出以下错误:
'Columns must be same length as key'
我想添加一个检查值是否为 != null 的函数,然后执行上面列出的命令,否则为 First_Name 和 'Last_Name' 输入 'NA'
任何想法我会怎么做?
编辑:
我刚刚检查了文件,但不确定是否为 NULL。我有一些 3-4 个字符串长的名字。即
John Allen Doe
John Allen Doe Jr
也许我不能把它分成 First_Name 和 Last_Name。
嗯嗯
【问题讨论】:
-
这对我有用。你用的是什么版本的 pandas/python?
-
Python 3,熊猫 0.20.1。当你有空值时它有效吗?我认为这就是错误显示给我的原因。也许是其他原因?文件有 5k 条记录,当我执行 .head(10) 并且所有值都存在时,它可以工作,当我将它打开到整个文件('director_name' 中有 NULL 值)时,它不会
-
该错误是因为某些字段会有多个空格,我已经更新了您上一个问题的答案以处理该问题
-
@JD2775,我也试过了,效果很好。
-
如果有一个值说 'Robert Downey Jr',此代码将抛出错误,因为它需要两个字段,解决方案被拆分并取前两个值。df['First_Name'] = df .name.str.split(' ', expand = True)[0] df['Last_Name'] = df.name.str.split(' ', expand = True)[1]