我尝试在大型熊猫数据框中对包含分类数据( "Yes"
和 "No"
)的许多列进行编码。完整的数据框包含 400 多列,因此我正在寻找一种方法来对所有需要的列进行编码,而不必对它们进行逐一编码。我使用 Scikit-learn LabelEncoder
对分类数据进行编码。
不必对数据帧的第一部分进行编码,但是我正在寻找一种方法来直接对所有包含分类日期的所需列进行编码,而无需拆分和连接数据帧。
为了证明我的问题,我首先尝试在数据框的一小部分上解决它。然而,卡在数据拟合和转换的最后部分并得到 ValueError: bad input shape (4,3)
。我运行的代码:
# Create a simple dataframe resembling large dataframe
data = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ["Yes", "No", "Yes", "Yes"],
'C': ["Yes", "No", "No", "Yes"],
'D': ["No", "Yes", "No", "Yes"]})
# Import required module
from sklearn.preprocessing import LabelEncoder
# Create an object of the label encoder class
labelencoder = LabelEncoder()
# Apply labelencoder object on columns
labelencoder.fit_transform(data.ix[:, 1:]) # First column does not need to be encoded
完整的错误报告:
labelencoder.fit_transform(data.ix[:, 1:])
Traceback (most recent call last):
File "<ipython-input-47-b4986a719976>", line 1, in <module>
labelencoder.fit_transform(data.ix[:, 1:])
File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py", line 129, in fit_transform
y = column_or_1d(y, warn=True)
File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 562, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (4, 3)
有谁知道如何做到这一点?
原文由 HelloBlob 发布,翻译遵循 CC BY-SA 4.0 许可协议
如以下代码,您可以通过将
LabelEncoder
应用于DataFrame来对多列进行编码。但是,请注意,我们无法获取所有列的类信息。