“function”对象没有属性“apply”

Sur*_*ngh 1 python apply pandas

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

我正在尝试借助 apply 函数来清理文本数据。但出现上述错误。我的代码是:

def _remove_noise(input_text):
    input_text = str(input_text).encode('ascii', 'ignore')
    input_text = str(input_text).replace(",", "")
    return input_text
Run Code Online (Sandbox Code Playgroud)

当我使用 apply 函数调用上述函数时,如下所示:

df['query1'] = df.query.apply(_remove_noise)
Run Code Online (Sandbox Code Playgroud)

它抛出的错误为:

“function”对象没有属性“apply”

jez*_*ael 5

DataFrame.query是 pandas 函数,因此需要[]选择列query

df['query1'] = df['query'].apply(_remove_noise)
Run Code Online (Sandbox Code Playgroud)

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

  • 可能是因为“查询”是保留字,为以这种方式调用的函数保留。这与所谓的“国家”或类似名称的专栏不同。 (2认同)
  • @SurenderSingh - 因为 [`DataFrame.query`](http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) 用于过滤,如`df.query ('col == 1')`,所以如果使用 `df.query.apply` 它会链接 `query` 和 `apply` 函数并引发错误。因此需要通过“['query']”进行替代选择 - 这是选择列的通用解决方案 (2认同)