我有一个有39个分类和27个数字特征的数据集。我试图对分类数据进行编码,并需要能够再次对每一列进行逆变换和调用转换。有比定义39个单独的LabelEncoder实例,然后对每个列分别定义fit_transform更漂亮的方法吗?
我觉得我错过了一些显而易见的东西,但我想不出!
enc = LabelEncoder
cat_feat = [col for col in input_df2.columns if input_df2[col].dtype == 'object']
cat_feat = np.asarray(cat_feat)
le1 =LabelEncoder()
le2 =LabelEncoder()
le3 =LabelEncoder()
...
#extended to le39
def label(input):
input.iloc[:, 1] = le1.fit_transform(input.iloc[:, 1])
input.iloc[:, 3] = le1.fit_transform(input.iloc[:, 3])
input.iloc[:, 4] = le1.fit_transform(input.iloc[:, 4])
...
return input发布于 2022-03-10 21:27:21
DataFrame.apply就是为了这个。它将为dataframe的每一列(或每一行,如果您传递它axis=1)调用指定的函数:
encoders = []
def apply_label_encoder(col):
le = LabelEncoder()
encoders.append(le)
le.fit_transform(col)
return
input_df.iloc[:, 1:] = input_df.iloc[:, 1:].apply(apply_label_encoder)https://stackoverflow.com/questions/71430879
复制相似问题