【问题标题】:pandas Apply function not works on Dataframe熊猫应用功能不适用于数据框
【发布时间】:2020-05-17 21:31:58
【问题描述】:

我想使用正则表达式从 Pnadas 数据框中检索名称,但 Pandas 应用函数不适用于 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

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

【问题讨论】:

  • 错误是什么?
  • TypeError: 预期的字符串或类似字节的对象

标签: python pandas dataframe apply


【解决方案1】:

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

此代码将整个数据框行传递给您的函数,而 p.match 不能使用。

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

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

doc[0].apply(get_name)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2013-02-28
    相关资源
    最近更新 更多