使用sklearn LabelEncoder对整个datafarame进行标签编码

问题描述

我想使用Keras的顺序模型预测序列。我的数据框包含字符串数据,因此我决定使用sklearn库中的LabelEncoder对字符串数据进行编码。

enter image description here

我尝试了以下代码段:

import pandas as pd
df = pd.read_csv("sample-03.csv")
from sklearn.preprocessing import LabelEncoder
df.apply(LabelEncoder().fit_transform)

给出此结果:

enter image description here

标签编码应用于具有不同值的每一列,即对于整个数据集,我需要将http://example.com/296表示为“ 2”。 谢谢您提出解决方案。

我还尝试将数据集转换为元组,并为此数据集使用字典,但同样,键对于不同列中的相同值也不是唯一的。

解决方法

LabelEncoder无法满足您的要求。我建议编写一个提取所有唯一URL的小函数,然后为每个URL分配一个数值,然后用数据框中的相应数值替换这些URL。

,

我想出了解决方案,想在这里分享。

le = LabelEncoder()
le.fit(df.stack().unique())
df['x-2']= le.transform(df['x-2'])
df['x-1']= le.transform(df['x-1'])
df['x0']= le.transform(df['x0'])
df['x1']= le.transform(df['x1'])
df['x2']= le.transform(df['x2'])