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

duc*_*thd 10 python pandas

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

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

df[['first', 'last']] = df.apply(lambda x: splitName(x['name']), axis=1)
Run Code Online (Sandbox Code Playgroud)

不幸的DataFrame.apply是,真的很慢.有什么办法让这个字符串操作几乎和操作一样快numpy吗?

谢谢!

Wes*_*ney 21

尝试(需要pandas> = 0.8.1):

splits = x['name'].split()
df['first'] = splits.str[0]
df['last'] = splits.str[1]
Run Code Online (Sandbox Code Playgroud)

  • 它现在可以作为`Series.str.split()`使用 (7认同)