如何使用pandas在dataframepython中编码多个列(但不是所有列)

如何使用pandas在dataframepython中编码多个列(但不是所有列),python,pandas,dataframe,scikit-learn,sklearn-pandas,Python,Pandas,Dataframe,Scikit Learn,Sklearn Pandas,我想使用两个数据帧(测试数据帧、训练数据帧)构建一个朴素的贝叶斯模型 数据帧包含13列,但我只想将数据帧从str编码为int值,只需5-6列。我如何使用一个代码来实现这一点,以便可以直接对6列进行编码,我遵循以下答案: 但它只编码1列,而我想要的是6列和1个代码。您可以循环遍历这些列并拟合变换 cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6'] for col in cols: le = LabelEncoder()

我想使用两个数据帧(测试数据帧、训练数据帧)构建一个朴素的贝叶斯模型

数据帧包含13列,但我只想将数据帧从
str
编码为
int
值,只需5-6列。我如何使用一个代码来实现这一点,以便可以直接对6列进行编码,我遵循以下答案:


但它只编码1列,而我想要的是6列和1个代码。

您可以循环遍历这些列并拟合变换

cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']

for col in cols:
    le = LabelEncoder()
    df[col] = le.fit_transform(df[col].astype('str'))
    
df
理想情况下,您希望对训练数据集和测试数据集使用相同的trasnfomer
为此,您需要使用

对于col中的col:
le=标签编码()
le.fit(df_列[col].astype('str'))
df_列[col]=le.transform(df_列[col].astype('str'))
df_test[col]=le.transform(df_test[col].astype('str'))
df
您尝试应用()了吗


它是自动保存的还是需要像您使用时一样将其放入
inplace=True
?它是自动保存的。df_列[col]=le.transform(df_列[col])等价于le.transform(df_列[col],inplace=True)。您可以使用赋值运算符“=”或使用inplace=True。两者都会给出相同的结果。但不要同时使用它们。
TypeError:参数必须是一个字符串或数字,当我从sklearn构建类似这样的代码时,它会产生。预处理导入标签编码cols=['Length\u Employed'、'Home\u Owner'、'Income\u Verified'、'Purpose\u\u Loan'、'Gender']对于cols中的col:le=LabelEncoder()le.fit(df[col])]df[col]=le.transform(df[col])df1[col]=le.transform(df1[col])嗨,当我尝试它时,我也将le.fit(df_train[col])
转换成了le.fit(df_train[col].astype('str'),效果很好
cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']

for col in cols:
    le = LabelEncoder()
    df[col] = le.fit_transform(df[col].astype('str'))
    
df
 le = LabelEncoder()
 df['colors'] = df['colors'].apply(lambda x: le.fit_transform(x))