12

假设我有一个DataFrame100k 行和一个列name。我想尽可能有效地将这个名字分成名字和姓氏。我目前的方法是,

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吗?

谢谢!

4

1 回答 1

23

尝试(需要 pandas >= 0.8.1):

splits = x['name'].split()
df['first'] = splits.str[0]
df['last'] = splits.str[1]
于 2012-10-11T20:03:34.420 回答