无法在具有某些“ nan”值的列中使用Apply函数

时间:2018-07-08 06:38:35

标签: pandas machine-learning scikit-learn

这是Python 3.0环境中的机器学习问题。我一直在工作 与Wines数据集有关的分类问题。我想对数据集中存在的功能“国家/地区”的值使用LabelEncoder()。既然有一些 “国家/地区”中的“ nan”值,我尝试仅对那些不是 空值。但是,我编写的代码:

import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

dataset = pd.read_csv('winemag-data-130k-v2.csv')

a = pd.Series(data = le.fit_transform(dataset[dataset.loc[:, 'country'].notnull()].loc[:,'country']))
dataset[dataset.loc[:, 'country'].notnull()].loc[:, 'country'].apply(lambda i: i, a)

但是这总是会产生如下错误:

  

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

更新:我知道这不是一个小小的解决方案,但我认为它可以解决问题

dataset.loc[:, 'country'] =dataset.loc[:, 'country'].replace(le.classes_, le.transform(le.classes_))

旧答案 如果我假设您希望使用LabelEncoder()对国家/地区进行编码是正确的,那么最后一行的语法是不正确的,因为您尝试使用lambda表达式错误地映射系列。应该是

dataset.loc[:, 'country'] = a[dataset.loc[:, 'country'].notnull()]

enter image description here