我想使用正则表达式从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
为什么我的函数不能应用于数据框?感谢您的帮助。
答案 0 :(得分:0)
使用apply函数时,它将迭代指定区域中的所有值。
此代码将整个数据帧行传递到函数中,而p.match无法使用该函数。
doc.apply(get_name) #Note that you should also put axis=1
但是,此代码仅传递其中包含名称的列,因此p.match可以成功使用它。
doc[0].apply(get_name)