Python3: 如何选择我想要的列并避免它们不存在时的KeyError

我有一些分类值

E.g. things = 'cat', 'dog', 'pen', 'bar'

我通过OneHotEncoding将它们编码为数值:

car dog pen bar1   1   1   1

我想使用数据集中的一些列。

例如,car、dog、pen 而不是 bar。

我通过定义特定的列来实现:

dataset = dataset[['car', 'dog', 'pen']]

但有时我想要的某些列在数据集中不存在,例如 ‘car’

然后Python会打印错误:

KeyError: "['car'] not in index"

如何解决这个问题:

  1. 获得我想要的列
  2. 避免我想要的列不存在时的错误

回答:

你可以进行一些健全性检查。以下是一个示例函数:

def custom_dataset(dataset, req_cols):    in_, out_ = [], []    if isinstance(dataset, pd.DataFrame):  # 可选的        for col in req_cols:  # 检查每个存在的列            if col in dataset.columns:                in_.append(col)  # 追加那些存在(即有效)的列            else:                out_.append(col)  # 追加那些不存在(即无效)的列    return dataset[in_] if in_ else None, out_ if out_ else None

如你所见,它返回一个包含两个元素的元组:

  1. 仅包含存在的列的数据集,如果没有找到任何列,则返回None(这样你可以检查结果是否为None以避免错误)。
  2. 未找到的列的列表(用于记录)。如果所有列都找到了,则返回None。

即使数据集不是DataFrame的实例,或者用户没有提供任何要收集的列,该函数也不会抛出错误,而是返回(None, None)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注