【发布时间】:2020-10-25 02:59:22
【问题描述】:
我在 csv 中有一列是我想要转换为数组的水果的名称。
示例 csv 列:
Names:
Apple
Banana
Pear
Watermelom
Jackfruit
..
..
..
列中有大约 400 个水果名称
我使用了一种热编码,但无法显示列名(csv 列的一行中的每个水果名称)
到目前为止我的代码是:
import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
dataset = pd.read_csv('D:/fruits.csv')
X= dataset.iloc[:, 0].values
labelencoder_X = LabelEncoder()
D= labelencoder_X.fit_transform(X)
D = D.reshape(-1, 1)
onehotencoder = OneHotEncoder(sparse=False, categorical_features = [0])
X = onehotencoder.fit_transform(D)
这会将列的数据转换为 numpy 数组,但列名称为 [0 1 2 3 .. ..] 我希望作为 csv 的每一行名称,例如 [Apple Banana Pear Watermelon .. ..]
使用一种热编码后如何保留列名
【问题讨论】:
-
你能添加你当前的输出和想要的输出吗?
-
.values将数据框更改为不支持字符串列名的 numpy 数组。你可以试试X = pd.DataFrame(X, columns = dataset.columns) -
@SachinPrabhu 我收到错误“ValueError:传递值的形状为 (1, 68197),索引暗示 (3, 68197)”
-
这能回答你的问题吗? Feature names from OneHotEncoder
标签: pandas numpy scikit-learn numpy-ndarray one-hot-encoding