【发布时间】:2012-10-01 12:28:11
【问题描述】:
假设我有一个 DataFrame 有 100k 行和一列 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 操作一样快吗?
谢谢!
【问题讨论】:
-
如果你有 pandas 0.8.1 或更高版本,看起来你应该可以做到
series.str.split()。此处的文档:pandas.pydata.org/pandas-docs/stable/…