Python实现从1开始的LabelEncoder编码并保留列原始位置
解决Pandas中LabelEncoder编码从1开始并保持列位置的问题
你的需求是让team列编码值从1开始,且保持在数据框首位,只需对代码做两处简单修改:
- 对LabelEncoder的结果加1,将0起始的编码转为1起始;
- 直接替换原
team列的值,无需删除后重新添加,这样列位置自然保留。
修改后的完整代码:
#Load the required libraries import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder #Create dictionary data = {'team': ['A', 'A', 'B', 'B', 'C'], 'Income': [5849, 4583, 3000, 2583, 6000], 'Coapplicant Income': [0, 1508, 0, 2358, 0], 'LoanAmount': [123, 128, 66, 120, 141]} #Convert dictionary to dataframe df = pd.DataFrame(data) print("\n原始df:\n", df) # Initiate label encoder le = LabelEncoder() # 生成从1开始的编码 label = le.fit_transform(df['team']) + 1 # 打印编码结果 print("\n编码后label =", label ) # 直接替换原team列,保持列位置不变 df["team"] = label # 打印处理后的Dataframe print("\n处理后的df:\n", df)
关键修改说明:
- 编码从1开始:
le.fit_transform(df['team'])会生成0、1、2的编码,加1后变为1、2、3,满足需求; - 保留列位置:直接对原
team列赋值,不需要执行drop和重新添加列的操作,这样team列始终在数据框的首位。
内容的提问来源于stack exchange,提问作者NN_Developer
相关产品推荐
相关产品推荐

