我使用的是Spark v3.0.0版本。我的数据框如下:
indexer.show()+------+--------+-----+|row_id| city|index|+------+--------+-----+| 0|New York| 0.0|| 1| Moscow| 3.0|| 2| Beijing| 1.0|| 3|New York| 0.0|| 4| Paris| 2.0|| 5| Paris| 2.0|| 6|New York| 0.0|| 7| Beijing| 1.0|+------+--------+-----+
然后我想对数据框的”index”列进行独热编码,结果出现了这个错误。
encoder = OneHotEncoder(inputCol="index", outputCol="encoding")encoder.setDropLast(False)indexer = encoder.transform(indexer)
----------------------------------------AttributeErrorTraceback (most recent call last)<ipython-input-32-70bbd67e6679> in <module> 1 encoder = OneHotEncoder(inputCol="index", outputCol="encoding") 2 encoder.setDropLast(False)----> 3 indexer = encoder.transform(indexer)AttributeError: 'OneHotEncoder' object has no attribute 'transform'
回答:
你需要先进行拟合操作——在拟合之前,该属性确实不存在:
encoder = OneHotEncoder(inputCol="index", outputCol="encoding")encoder.setDropLast(False)ohe = encoder.fit(indexer) # indexer是现有的数据框,见问题描述indexer = ohe.transform(indexer)
有关使用详情,请查看文档中的示例。