0

AttributeError: 'DataFrame' object has no attribute 'column'当我在数据框中的列上运行函数时,我不断得到

def reform (column, dataframe): 
    if dataframe.column.nunique() > 2 and dataframe.column.dtypes == object:
        enc.fit(dataframe[['column']])
        enc.categories_
        onehot = enc.transform(dataframe[[column]]).toarray()
        dataframe[enc.categories_] = onehot
    elif dataframe.column.nunique() == 2 and dataframe.column.dtypes == object :
        le.fit_transform(dataframe[['column']])
    else:
        print('Column cannot be reformed')
    return dataframe
4

1 回答 1

0

尝试改变

  • dataframe.columndataframe.loc[:,column].
  • dataframe[['column']]dataframe.loc[:,[column]]

如需更多帮助,请提供更多信息。如:What is enc(show your imports)?看起来像什么dataframe(显示一个小例子,也许用dataframe.head(5))?

详细信息: 由于column是输入(可能是字符串),因此在从数据框对象请求该列时需要正确使用它。如果你只是使用dataframe.column它,它将尝试找到实际命名为“column”的列,但如果你要求它dataframe.loc[:,column],它将使用输入参数名为 column 表示的字符串。

  • 使用dataframe.loc[:,column],您将获得 Pandas Series,并dataframe.loc[:,[column]]获得 Pandas DataFrame。

  • pandas 属性'columns',用作dataframe.columns(注意末尾的's')只返回数据框中所有列的名称列表,可能不是你想要的。

提示:

  • 尝试命名输入参数,以便您知道它们是什么。

  • 开发函数时,尝试将输入设置为静态,并迭代代码直到获得所需的输出。例如

      input_df = my_df
      column_name = 'some_test_column'
      if input_df.loc[:,column_name].nunique() > 2 and input_df.loc[:,column_name].dtypes == object:
          enc.fit(input_df.loc[:,[column_name]])
          onehot = enc.transform(input_df.loc[:,[column_name]]).toarray()
          input_df.loc[:, enc.categories_] = onehot
      elif input_df.loc[:,column_name].nunique() == 2 and input_df.loc[:,column_name].dtypes == object :
          le.fit_transform(input_df.loc[:,[column_name]])
      else:
          print('Column cannot be transformed')
    
  • 查看如何通过 ColumnTransformer 使用 SciKit Learn Pipelines。这将有助于简化工作流程(https://scikit-learn.org/stable/modules/compose.html)。

于 2022-02-21T10:04:22.090 回答