pandas Apply函数不适用于Dataframe

问题描述 投票:0回答:1

我想使用正则表达式从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

为什么我的函数不能应用于数据框?感谢您的帮助。

python pandas dataframe apply
1个回答
0
投票

当您使用apply函数时,它将迭代指定区域中的所有值。

此代码将整个数据帧行传递到您的函数中,p.match无法使用。

doc.apply(get_name) #Note that you should also put axis=1

但是,此代码仅传递其中包含名称的列,因此p.match可以成功使用它。

doc[0].apply(get_name)
© www.soinside.com 2019 - 2024. All rights reserved.