在pandas DataFrame中快速应用字符串操作

12

假设我有一个包含100k行和一列nameDataFrame。我想要尽可能高效地将这个名字拆分成名字和姓氏。我的当前方法是:

def splitName(name):
  return pandas.Series(name.split()[0:2])

df[['first', 'last']] = df.apply(lambda x: splitName(x['name']), axis=1)

很不幸,DataFrame.apply的速度非常慢。有没有什么方法可以使这个字符串操作的速度接近于numpy操作呢?

谢谢!


5
如果你使用的是0.8.1或更高版本的pandas,那么似乎你可以使用 series.str.split() 进行操作。相关文档在这里:http://pandas.pydata.org/pandas-docs/stable/basics.html#vectorized-string-methods - Thomas K
1个回答

23
尝试一下(需要 pandas 版本大于等于 0.8.1):
splits = x['name'].split()
df['first'] = splits.str[0]
df['last'] = splits.str[1]

1
太好了!我不知道这个新增功能。 - duckworthd
有趣的是,这个问题与这个稍后的问题完全相同,但回答中没有提到Series.split()。它已经从pandas中删除了吗? - LondonRob
9
现在可以使用 Series.str.split() 进行操作。 - joris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接