我想使用正则表达式从Pnadas数据框中检索名称,但是pandas Apply函数不适用于DataFrame对象。在熊猫系列物体上效果很好。请为我解释。
import pandas as pd
import re
doc = pd.DataFrame(['William Hartnell (1963-66)',
'Patrick Troughton (1966-69)',
'Jon Pertwee (1970 74)',
'Tom Baker (1974-81)',
'Peter Davison (1982-84)'])
p = re.compile('\w+\s+\w+')
def get_name(s):
return p.match(s).group()
nam = docs.apply(get_name) # gives me an error
nam = doc[0].apply(get_name) # works fine
为什么我的函数不能应用于数据框?感谢您的帮助。
当您使用apply函数时,它将迭代指定区域中的所有值。
此代码将整个数据帧行传递到您的函数中,p.match无法使用。
doc.apply(get_name) #Note that you should also put axis=1
但是,此代码仅传递其中包含名称的列,因此p.match可以成功使用它。
doc[0].apply(get_name)