【问题标题】:'function' object has no attribute 'apply''function' 对象没有属性 'apply'
【发布时间】:2019-04-07 05:59:40
【问题描述】:

我有一个数据框 df ,其中有一列“查询”包含文本数据。

我正在尝试借助应用功能清理文本数据。但得到上述错误。我的代码是:

def _remove_noise(input_text):
    input_text = str(input_text).encode('ascii', 'ignore')
    input_text = str(input_text).replace(",", "")
    return input_text

当我使用 apply 函数调用上述函数时:

df['query1'] = df.query.apply(_remove_noise)

将错误抛出为:

'function'对象没有属性'apply'

【问题讨论】:

    标签: python pandas apply


    【解决方案1】:

    DataFrame.query是pandas函数,所以选择列需要[]query

    df['query1'] = df['query'].apply(_remove_noise)
    

    DataFrame.query 用于过滤,如df.query('col == 1'),因此如果使用df.query.apply 则链接queryapply 函数并引发错误。

    【讨论】:

    • 非常感谢@jezrael,它正在工作。但是为什么 df.query 不起作用。查询是数据框的列之一,我之前尝试过,效果很好
    • 可能是因为 'query' 是保留字,保留给以这种方式调用的函数。这与称为“国家/地区”或类似名称的列不同。
    • @SurenderSingh - 因为DataFrame.query 用于过滤,如df.query('col == 1'),所以如果使用df.query.apply 它链接queryapply 函数并引发错误。所以需要['query'] 的替代选择 - 这是选择列的通用解决方案
    • 感谢 Itamar Mushkin 和 @jezrael 的解释。是的,你是对的
    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 2019-08-13
    • 2016-03-17
    • 2017-08-02
    • 1970-01-01
    • 2017-03-06
    • 2017-06-08
    • 2017-07-07
    相关资源
    最近更新 更多